必须的jar包包括:spring-aop、spring-context、aopalliance等;
服务端工程配置:
1.POJO类
package com.iaccount.network.domain;
public class FmAccount implements Serializable{
private static final long serialVersionUID = 1379914548823145349L;
private Long id;
public FmAccount(Long id){
this.id = id;
}
public String toString(){
return "FmAccount:id="+id;
}
}
2.接口
package com.iaccount.network.manager;
public interface AccountManager {
FmAccount selectByPrimaryKey(Long id);
}
3.实现类
package com.iaccount.network.manager.impl;
@Service("accountManager")
public class AccountManagerImpl implements AccountManager {
@Autowired
private FmAccountMapper fmAccountMapper;
@Override
public FmAccount selectByPrimaryKey(Long id){
return new FmAccount(id);
}
}
4.Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <context:component-scan base-package="com.iaccount.network.manager.impl" /> <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName" value="AccountManager" /> <!-- 这里使用注解方式并在上方添加了扫描路径 --> <!-- 若不适用注解,需要在配置文件中注册bean --> <property name="service" ref="accountManager" /> <property name="serviceInterface" value="com.iaccount.network.manager.AccountManager" /> <property name="registryPort" value="8089" /><!-- 若不指定,默认1099 --> <property name="servicePort" value="8088" /><!-- 如果不指定,这个端口就是随机的,没法预先在防火墙中设置 --> </bean> </beans>
客户端工程配置:
1.POJO类
package com.iaccount.network.domain;
public class FmAccount implements Serializable{
private static final long serialVersionUID = 1379914548823145349L;
private Long id;
public FmAccount(Long id){
this.id = id;
}
public String toString(){
return "FmAccount:id="+id;
}
}
注意:POJO类与服务端工程中的POJO类包路径(com.iaccount.network.domain)必须一致,一般由服务端发布统一jar包供客户端工程使用即可。
2.接口
package com.beginning.network.rmi;
public interface AccountManager {
FmAccount selectByPrimaryKey(Long id);
}
接口无需实现类
3.客户端Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <bean id="accountManager" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl" value="rmi://127.0.0.1:8089/AccountManager" /> <property name="serviceInterface" value="com.beginning.network.rmi.AccountManager" /> </bean> </beans>
4.调用测试
@Controller
public class TestAction{
@Autowired
private AccountManager accountManager;
/**
* 测试
*/
@RequestMapping(value = "/test", method=RequestMethod.GET)
public void toLogin(HttpServletRequest request, ModelMap model){
FmAccount account = accountManager.selectByPrimaryKey(1L);
System.out.println(account);
}
}