bbossgroups 3.2 即将发布。除对所有的子项目所做问题修复和功能改进外,新增加rmi服务组件发布和rmi客服端组件获取功能,本文提前对该功能做一个简单的介绍。
- RMI服务的发布规则
- RMI服务的注册方法
- RMI服务器组件接口和实现实例
- RMI组件服务端和客服端配置以及调用示例
RMI服务的发布规则 
和bbossgroups的中webservice服务发布方法一样,rmi服务的发布也有以下规则:
1.配置在mvc框架控制器配置文件中的rmi服务将被自动发布,无需额外配置
2.在独立的组件管理容器中发布的rmi服务,需将该容器对应的根配置文件添加到rmi服务的部署装配文件中,例如:
组件容器文件:
org/frameworkset/spi/remote/rmi/rmi.xml
<properties>
<property name="rmi_service_test"
rmi:address="rmi_service_test"
class="org.frameworkset.spi.remote.rmi.RMIServiceTest"/>
</properties>
那么需要将org/frameworkset/spi/remote/rmi/rmi.xml配置在装配文件:
org/frameworkset/spi/rmi/rmi-assemble.xml中:
<properties>
<!--
rmi服务组件装配文件,每个文件作为单独的容器来处理,这里装配的是classpath上下文中需要独立加载的rmi服务
mvc框架中需要加载的rmi服务只需要在对应的组件中标注rmi:address即可,当rmi引擎启动时会加载这两种模式下的
所有rmi服务.
-->
<property name="rmi.services.modules">
<array componentType="String">
<property value="org/frameworkset/spi/remote/rmi/rmi.xml"/>
</array>
</property>
<!-- 本组件依赖于bboss-mvc.jar -->
<property name="webapplicationcontext" factory-class="org.frameworkset.web.servlet.support.WebApplicationContextUtils" factory-method="getWebApplicationContext"/>
</properties>
RMI服务的注册方法 
当rmi服务在配置文件中配置完毕,接下来要做的事情就是将系统中所有配置好的rmi服务注册和发布到rmi注册表中以便客服端能够调用,本段介绍如何加载和启动已经配置好的rmi服务。
rmi服务的发布和注册和webservice服务的发布有点不同,webservice服务直接通过web.xml中配置webservice的处理servlet即可,无需额外的程序来管理,rmi服务需要额外的程序来管理和注册,用户只需要在程序中调用以下方法:
org.frameworkset.spi.remote.rmi.RMIAssemble.loadAllRMIService();
RMI服务器组件接口和实现实例 
本段介绍rmi服务器组件接口和实现实例
1.接口
package org.frameworkset.spi.remote.rmi;
import java.rmi.RemoteException;
/**
* <p>Title: RMIServiceTestInf.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2007</p>
* @Date 2011-5-18 下午05:36:07
* @author biaoping.yin
* @version 1.0
*/
public interface RMIServiceTestInf extends java.rmi.Remote{
public String sayHello(String name) throws RemoteException;
}
2.组件实现
package org.frameworkset.spi.remote.rmi;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
/**
* <p>Title: RMIServiceTest.java</p>
* <p>Description: </p>
* <p>bboss workgroup</p>
* <p>Copyright (c) 2007</p>
* @Date 2011-5-18 下午05:09:21
* @author biaoping.yin
* @version 1.0
*/
public class RMIServiceTest extends UnicastRemoteObject implements RMIServiceTestInf{
public RMIServiceTest() throws RemoteException {
super();
}
public String sayHello(String name) throws RemoteException
{
System.out.println("你好," + name);
return "from server:你好," + name;
}
}
RMI组件服务端和客服端配置以及调用示例 
bbossgroups 3.2 即将发布。除对所有的子项目所做问题修复和功能改进外,新增加rmi服务组件发布和rmi客服端组件获取功能,本文提前对该功能做一个简单的介绍。
1.配置服务,通过 rmi:address属性指定发布服务的唯一地址:
<property name="rmi_service_test"
rmi:address="rmi_service_test"
class="org.frameworkset.spi.remote.rmi.RMIServiceTest"/>
1.1 服务器ip和port的指定在rmi协议配置文件中:
/bbossaop/resources/org/frameworkset/spi/manager-rpc-rmi.xml
<!--
服务器绑定端口
-->
<property name="connection.bind.port" value="1099" />
<!--
服务器绑定ip
-->
<property name="connection.bind.ip" value="172.16.25.108" />
2.rmi客服端组件配置和获取:
2.1 配置
<property name="rmi_service_client_test" factory-class="org.frameworkset.spi.remote.rmi.RMIUtil" factory-method="lookupService">
<construction>
<property name="servicaddress" value="//172.16.25.108:1099/rmi_service_test"/>
</construction>
</property>
2.2 获取和使用:
BaseApplicationContext context ;
@Before
public void init()
{
context = ApplicationContext.getApplicationContext("org/frameworkset/spi/remote/rmi/rmi-client.xml");
}
@Test
public void test() throws RemoteException
{
RMIServiceTestInf test = (RMIServiceTestInf)context.getBeanObject("rmi_service_client_test");
System.out.println(test.sayHello("多多"));
}