simpappservlet.java

来自「weblogic应用全实例」· Java 代码 · 共 181 行

JAVA
181
字号
//声明这个类定义在包examples.wlec.servlets.simpapp中
package examples.wlec.servlets.simpapp;
//声明这个类引入的其他类或包
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Properties;

import org.omg.CORBA.*;
import com.beasys.Tobj.*;
import com.beasys.*;

/* 这些来自WebLogic Enterprise simpapp 实例 */
import SimpleFactory;     
import SimpleFactoryHelper;
import Simple;       

/**
 * 这个实例演示一个WebLogic servlet怎样连接WebLogic Enterprise,并调用一个CORBA对象上的操作。
 * 这个servlet在Simpapp.html中被调用。
 * 当Weblogic应用服务器启动时,它打开了WebLogic Enterprise IIOP监听的多个连接,在servlet初始化阶段,
 * 它从连接池中找到一个连接,即它作为一个WebLogic Enterprise的客户端,获取一个客户端上下文。
 * servlet下一步查找构造器。
 * 当用户发送表单,从Simple构造器得到了一个Simple对象,并调用toupper/tolower方法。
 */

//servlet类必须继承javax.servlet.HttpServlet
public class SimpappServlet extends HttpServlet {


  // 构造器SimpleFactory用来获取Simple对象

  static SimpleFactory simple_factory_ref;
  final String defaultCase = "UPPER";
  final String defaultString = "It Works";

  /**
  * 初始化servlet。这里我们获取Bootstrap对象,Factory Finder和Simple构造器。
  * @参数 config            Servlet configuration
  * @异常               ServletException if the servlet fails
  */

  public void init(ServletConfig config) throws ServletException
  {

    try {

      super.init(config);

      // 创建bootstrap对象,
      Tobj_Bootstrap bootstrap = 
        BootstrapFactory.getClientContext("simplepool");

      // 使用bootstrap对象查找factory finder.
      org.omg.CORBA.Object fact_finder_oref =
        bootstrap.resolve_initial_references("FactoryFinder") ;

      // 验证factory finder.
      FactoryFinder fact_finder_ref =
        FactoryFinderHelper.narrow(fact_finder_oref);

      // 使用factory finder查找simple构造器.
      org.omg.CORBA.Object simple_fact_oref =
        fact_finder_ref.find_one_factory_by_id(SimpleFactoryHelper.id());

      // 验证simple factory.
      simple_factory_ref =
        SimpleFactoryHelper.narrow(simple_fact_oref);

    }
    catch (org.omg.CosLifeCycle.NoFactory e) {
    //异常处理
      System.err.println("Can't find the simple factory: " +e);
      throw new ServletException(e.toString());
    }
    catch (CannotProceed e) {
    //异常处理
      System.err.println("FactoryFinder internal error: " +e);
      throw new ServletException(e.toString());
    }
    catch (RegistrarNotAvailable e) {
    //异常处理
      System.err.println("FactoryFinder Registrar not available: " +e);
      throw new ServletException(e.toString());
    }
    catch (InvalidName e) {
    //异常处理
      System.err.println("Invalid name from resolve_initial_reference(): " +e);
      throw new ServletException(e.toString());
    }
    catch (org.omg.CORBA.BAD_PARAM e) {
    //异常处理
      System.err.println("Invalid TOBJADDR=//host:port property specified: " +e);
      throw new ServletException(e.toString());
    }
    catch (org.omg.CORBA.UserException e) {
    //异常处理
      System.err.println("Unexpected CORBA user exception: " +e);
      throw new ServletException(e.toString());
    }
    catch (org.omg.CORBA.SystemException e) {
    //异常处理
      System.err.println("CORBA system exception: " +e);
      throw new ServletException(e.toString());
    }
  }

  /**
  * 实现service方法,其中我们获取Simple对象的IOR,调用tolower或toupper方法,
  * 并构造一个servlet页面,把用户的字串转换成大写或小写形式。
  */

  public void service(HttpServletRequest req, HttpServletResponse res) 
  throws ServletException, IOException
  {
	PrintWriter out;

    // 创建一个HTML页面
    	res.setContentType("text/html");
	out = res.getWriter();
	out.println("<HTML><HEAD><TITLE>");
      	out.println("Simpapp Servlet Sample");
	out.println("</TITLE></HEAD><BODY BGCOLOR=#8B129C>");
	out.println("<FONT COLOR=#FFFFFF><H1>Simpapp Servlet Sample</H1>");
	
   // 读取输入数据
    String mixed = (String) req.getParameter("InData");
    String changeCase = (String) req.getParameter("ChangeCase");

   // 如果没有输入数据,使用缺省的
    if ((mixed == null) || (mixed.length() <= 0)) {
      mixed = defaultString;
      out.println("Note: Using the default data: " + mixed);
    }

   // 如果没有大小写要求, 则用大写
    if ((changeCase == null) || (changeCase.length() <= 0)) {
      changeCase = defaultCase;
      out.println("Note: Using the default action:" + defaultCase);
    }

    try {
      String result;

      // 查找simple对象.
      Simple simple = simple_factory_ref.find_simple();

      if (changeCase.equals(defaultCase)) {
        // 调用to_upper操作
        org.omg.CORBA.StringHolder buf = 
        new org.omg.CORBA.StringHolder(mixed);
        simple.to_upper(buf);
        result = buf.value;
      }
      else
      {
        // 调用WebLogic Enterprise Simple object的to_lower方法
        result = simple.to_lower(mixed);
      }
      out.println("<P>");
      out.println("Output String: " + result);
      out.println("</FONT>");
   }
    catch (org.omg.CORBA.SystemException e) {
    //异常处理
      log("CORBA system exception: " +e);
    }
      out.println("</BODY></HTML>");
      out.close();
  }

  /**
  * 基本的servlet信息.
  */

  public String getServletInfo() {
    return "A simple servlet which acts a client for WebLogic Enterprise";
  }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?