绑定远程对象:
public static void main(String[] args) { try { // 8步 : 初始化---根---策略----子POA---伺服---激活---激活---监听 //初始化 org.omg.CORBA.ORB orb=org.omg.CORBA.ORB.init(args, null); //根 org.omg.PortableServer.POA rootPOA= POAHelper.narrow(orb.resolve_initial_references("RootPOA")); //策略 org.omg.CORBA.Policy[] policies= {rootPOA.create_lifespan_policy( LifespanPolicyValue.PERSISTENT)}; //有 根和策略 创建子POA org.omg.PortableServer.POA agendaPOA= rootPOA.create_POA("AgendaPOA", rootPOA.the_POAManager(), policies); //伺服 AgendaCORBAImpl agendaServant=new AgendaCORBAImpl(); //激活 伺服 agendaPOA.activate_object_with_id( "AgendaManager".getBytes(), agendaServant); //激活 POA管理器 rootPOA.the_POAManager().activate(); System.out.println("Server has ready ..."); //循环监听 orb.run(); } catch (Exception e) { e.printStackTrace(); } }
获取远程对象
private static IAgenda getAgenda(String[] args) { try { //初始化 org.omg.CORBA.ORB orb=org.omg.CORBA.ORB.init(args,null); //查找 IAgenda agenda= IAgendaHelper.bind( orb,"/AgendaPOA","AgendaManager".getBytes()); return agenda; } catch (Exception e) { e.printStackTrace(); return null; } }
获取数据库连接:
DBConnectionFacade.java /** * Gets the database connection from current active connection provider. * @return the connection */ public static Connection getConnection() throws DBConnectionException{ if (connProvider==null) { synchronized (initLock) { if (connProvider==null) { resourceBundleUtil= ResourceBundleUtil.getResourceBundleUtil(Lables); String providerClassName= resourceBundleUtil.getString("provider.calss"); if (providerClassName!=null &&providerClassName.length()==0) { try { Class providerClass= Class.forName(providerClassName); connProvider=(DBConnectionProvider) providerClass.newInstance();//动态装载 } catch (Exception e) {}//这里删去处理异常的代码 } else { connProvider = new DBConnectionDefaultPool(resourceBundleUtil); } connProvider.initProvider(); } } } return Connection conn=connProvider.getConnection();//这里删去处理异常的代码 }
接口DBConnectionProvider的默认实现类DBConnectionDefaultPool.java
/** * initial the connection pool. * * @see Database.DBConnectionProvider#initProvider() */ public void initProvider() throws DBConnectionException { // set Lock to prevent a connection be returned. synchronized (initLock) { // Get properties String driver = resourceBundleUtil.getString("driver"); String server = resourceBundleUtil.getString("server"); String username = resourceBundleUtil.getString("username"); String password = resourceBundleUtil.getString("password"); // System.out.println(driver+ server+ username+password); int minConnections = 0, maxConnections = 0; double connectionTimeOut = 0.0; try { minConnections = Integer.parseInt(resourceBundleUtil.getString("minConnections")); maxConnections = Integer.parseInt(resourceBundleUtil .getString("maxConnections")); connectionTimeOut = Double.parseDouble(resourceBundleUtil .getString("connectionTimeOut")); } catch (Exception e) { throw new ResourceBundleNotFoundException( "Could not parse default pool properties. " + "Make sure the values exist and are correct.", e); } String logPath = resourceBundleUtil.getString("logPath"); try { connectionPool = new ConnectionPool(driver, server, username, password, minConnections, maxConnections, logPath, connectionTimeOut); } catch (IOException e) { // "Error starting DbConnectionDefaultPool: " // throw new ConnectionPoolInitPool("Cannt found properties"); e.printStackTrace(); } } } public Connection getConnection() throws DBConnectionException { if (connectionPool == null) { // Block until the init has been done. synchronized (initLock) {// waitting for init. if (connectionPool == null) { // Something has gone wrong. return null; }