universityhelper.java

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

JAVA
219
字号
//声明这个类包含在包jsp_servlet中
package jsp_servlet;
//声明这个类引入的其它类或包
import java.io.*;
import java.util.Properties;

import weblogic.html.*;

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

/* 这些类来自WebLogic Enterprise University 实例 */
import UniversityT.RegistrarFactory;
import UniversityT.RegistrarFactoryHelper;
import UniversityT.Registrar;

/**
 * 这个实例演示一个WebLogic服务器怎样连接WebLogic Enterprise,
 * 调用CORBA对象。这包括一套被jsp servlets调用的方法。
 * 当Weblogic服务器启动时,它打开WebLogic Enterprise IIOP监听器的多个连接。
 * servlet从连接池选取一个连接,即作为一个WebLogic Enterprise客户端,并获取客户端上下文。
 * 然后servlet查找factory finder和Registrar factory,并获取Registrar对象。
 * 当用户发送form请求, 相应的操作被调用。
 * 服务器执行请求操作,并把结果数据以HTML形式发送到servlet。
 */

public class UniversityHelper {
  //声明变量
  public UniversityT.Registrar gRegistrarObjRef;
  public UniversityT.StudentDetails gStudentDetails;
  public org.omg.CosTransactions.Current gTransCur = null;

  /**
  * 初始化方法
  * @异常               Exception 如果servlet错误
  */
  public void univInit() throws Exception
  {
    byte[] userData = new byte[0];
    String clientName = "university_client";

    try {
		
      // 创建bootstrap对象,
      Tobj_Bootstrap bootstrap = 
        BootstrapFactory.getClientContext("Univpool");
			
      // 获取Factory Finder
      org.omg.CORBA.Object Off =
        bootstrap.resolve_initial_references("FactoryFinder");

      // 验证factory finder.
      FactoryFinder Ff = FactoryFinderHelper.narrow(Off);
     		 
      // 通过id查找Factory
      org.omg.CORBA.Object Of =
        Ff.find_one_factory_by_id(UniversityT.RegistrarFactoryHelper.id());
	
      // 验证factory.
      UniversityT.RegistrarFactory F = 
        UniversityT.RegistrarFactoryHelper.narrow(Of);

      // 请"RegistrarFactory"创建一个Registrar对象
      gRegistrarObjRef = F.find_registrar();
      	
      if (gRegistrarObjRef == null)
      {
        System.err.println("factory returned nil");
        throw new Exception();
      }
	
      // 获取当前事务对象
      try
      {
        org.omg.CORBA.Object transCurObj = 
          bootstrap.resolve_initial_references("TransactionCurrent");
        gTransCur = org.omg.CosTransactions.CurrentHelper.narrow(transCurObj);
      }
      catch(com.beasys.Tobj.InvalidName e)
      {
      //异常处理
        System.err.println("Invalid name: " + e);
        throw new Exception(e.toString());
      }
    }
    catch (org.omg.CosLifeCycle.NoFactory e) {
    //异常处理
      System.err.println("Can't find the Registrar factory: " +e);
      throw new Exception(e.toString());
    }
    catch (CannotProceed e) {
    //异常处理
      System.err.println("FactoryFinder internal error: " +e);
      throw new Exception(e.toString());
    }
    catch (RegistrarNotAvailable e) {
    //异常处理	
      System.err.println("FactoryFinder Registrar not available: " +e);
      throw new Exception(e.toString());
    }
    catch (InvalidName e) {
    //异常处理
      System.err.println("Invalid name from resolve_initial_reference(): " +e);
      throw new Exception(e.toString());
    }
    catch (org.omg.CORBA.BAD_PARAM e) {
    //异常处理
      System.err.println("Invalid TOBJADDR=//host:port property specified: " +e);
      throw new Exception(e.toString());
    }
    catch (org.omg.CORBA.UserException e) {
    //异常处理
      System.err.println("Unexpected CORBA user exception: " +e);
      throw new Exception(e.toString());
    }
    catch (org.omg.CORBA.SystemException e) {
    //异常处理
      System.err.println("CORBA system exception: " +e);
      throw new Exception(e.toString());
    }
  }

  // 这个方法返回当前事务对象
  
  public org.omg.CosTransactions.Current getTransCur() 
  {
    return gTransCur;
  }

  // 通过调用Registrar对象来验证学生

  public boolean verifyStudent(String studentIden) throws Exception
  {

    int studentId = Integer.parseInt (studentIden);
    boolean validId = true;

    try
    {
    // 调用相应的方法获取学生的详细信息
      gStudentDetails = 
        gRegistrarObjRef.get_student_details(studentId);
    }
    catch(org.omg.CORBA.OBJ_ADAPTER e)
    {
    //异常处理
      validId = false;
    }
    catch(org.omg.CORBA.NO_IMPLEMENT e)
    {
    //异常处理	
      validId = false;
    }
    catch(org.omg.CORBA.BAD_PARAM e)
    {
    //异常处理	
      validId = false;
    }
    catch(org.omg.CORBA.SystemException e)
    {
    //异常处理	
      validId= false;
      throw new Exception(e.toString());
    }
    return validId;
  }

  // 这个方法获取课程列表

  public UniversityT.CourseSynopsis[] get_courses(String aCriteria) throws Exception
  {
    final int CHUNK_SIZE = 0;

    org.omg.CORBA.IntHolder numberRemaining = new org.omg.CORBA.IntHolder();
    UniversityT.CourseSynopsisEnumeratorHolder theRest =
      new UniversityT.CourseSynopsisEnumeratorHolder();
    UniversityT.CourseSynopsis[] listOfCourses = null;
	
    try {
      listOfCourses =
      gRegistrarObjRef.get_courses_synopsis(aCriteria, CHUNK_SIZE,
      numberRemaining, theRest);
    }

    catch(org.omg.CORBA.SystemException e)
    {
      throw new Exception(e.toString());
    }
    return listOfCourses;
  }

  // 这个方法获取课程详细信息

  public UniversityT.CourseDetails[] get_course_details(String courseNum) 
    throws Exception
  {
    int[] selectedCourses;
    selectedCourses = new int[1];
	
    int course_num = Integer.parseInt (courseNum);
    UniversityT.CourseDetails[] details=null;
    selectedCourses[0] = course_num;
	
    try
    {
      // 调用Registrar对象的方法
      details =
        gRegistrarObjRef.get_courses_details(selectedCourses );
    }
    catch(org.omg.CORBA.SystemException e)
    {
    //抛出异常
      throw new Exception(e.toString());
    }
    return details;
  }
}

⌨️ 快捷键说明

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