今天用spring的rmi,启动似乎不注册rmi服务。最后手工的加载bean,成了。
晕,在配置头的时候设置default-lazy-init="true",延迟加载的说。
顺便贴代码
服务器端配置文件
<!-- 服务 --> < bean id ="myService" class ="org.spring.rmi.yoara.MyServiceImpl" /> <!-- RmiServiceExporter 此类封装了生成stub的方法,大大简化代码 --> < bean id ="serviceExporter" class ="org.springframework.remoting.rmi.RmiServiceExporter" > <!-- 服务 --> < property name ="service" ref ="myService" /> <!-- 服务名 --> < property name ="serviceName" value ="MyService" /> <!-- 绑定服务的路径 --> < property name ="serviceInterface" value ="org.spring.rmi.yoara.MyService" /> <!-- 服务端口 --> < property name ="registryPort" value ="1199" />
</bean>
服务pojo随便写就成了。
客户端配置文件
< bean id ="goService" class ="org.springframework.remoting.rmi.RmiProxyFactoryBean" > <!-- 服务URL --> < property name ="serviceUrl" value ="rmi://127.0.0.1:1199/MyService" /> <!-- 本地接口路径 --> < property name ="serviceInterface" value ="org.spring.rmi.yoara.MyService" />
</bean>
客户端调用代码
测试连接: // try { // System.out.println(Naming.lookup("rmi://localhost:1199/MyService")); // } catch (Exception e) { // e.printStackTrace(); } 第一种: ClassPathXmlApplicationContext cxc = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); MyService client = (MyService)cxc.getBean("goService"); client.showInfo(); 第二种: // RmiProxyFactoryBean proxy=new RmiProxyFactoryBean(); // proxy.setServiceInterface(MyService.class); // proxy.setServiceUrl("rmi://localhost:1199/MyService"); // proxy.afterPropertiesSet(); // MyService client=(MyService)proxy.getObject();
// client.showInfo();