⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servermain.java

📁 基于corba的资源池,实现了实例池供客户端调用,并且实例池对实例的分配采用策略模式支持随即抽取,最近使用和循环抽取三个不同策略.(在visibroke下面开发的)
💻 JAVA
字号:
// 服务端的主程序
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import org.omg.PortableServer.*;
import interfaceImpl.*;

public class ServerMain 
{
	public static void main(String[] args)
	{
        try {
            // 初始化ORB
            org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
            // 取根POA的引用
            org.omg.CORBA.Object obj = orb.resolve_initial_references("RootPOA");
			POA rootPOA = POAHelper.narrow(obj);
            // 创建持久POA的策略
            org.omg.CORBA.Policy[] policies = {
                //rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
                rootPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
                //rootPOA.create_id_assignment_policy(IdAssignmentPolicyValue.SYSTEM_ID)
            };
            // 用新定义的策略创建myPOA
            POA myPOA = rootPOA.create_POA("BankPOA", rootPOA.the_POAManager(), policies);
            // 创建伺服对象AccountManagerImpl
            AccountManagerImpl managerServant = AccountManagerImpl.getInstance(args.length!=0,args.length!=0?args[0]:null,rootPOA);
            // 创建伺服对象AccountIterator
            AccountIteratorImpl iteratorServant = new AccountIteratorImpl();
            // 在myPOA上用标识"BankManager"激活伺服对象
            myPOA.activate_object_with_id("BankManager".getBytes(), managerServant);
            //在myPOA上用标识"BankIterator"激活伺服对象
            myPOA.activate_object_with_id("BankIterator".getBytes(), iteratorServant);
            // 激活POA管理器
            rootPOA.the_POAManager().activate();
            
			// Get a reference to the managerServant and write it down.
			obj = myPOA.servant_to_reference(managerServant);
			PrintWriter ps = new PrintWriter(new FileOutputStream(new File("managerServer.ior")));
			ps.println(orb.object_to_string(obj));
			ps.close();
			
			// Get a reference to the iteratorServant and write it down.
			obj = myPOA.servant_to_reference(iteratorServant);
			PrintWriter ps2 = new PrintWriter(new FileOutputStream(new File("iteratorServer.ior")));
			ps2.println(orb.object_to_string(obj));
			ps2.close();
			
            // 等待处理客户程序的请求
            System.out.println("账户管理员BankManager已就绪 ...\n");
            orb.run();
        }catch(java.lang.NullPointerException e){
        	System.out.println("没有相关记录!");
        }catch(Exception exc) {
            exc.printStackTrace();
        }
    }
}

⌨️ 快捷键说明

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