Spring RMI配置

必须的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);
	}
}

 

 

你可能感兴趣的:(spring rmi)