远程服务Java RMI 与Spring整合

Java RMI是Java编程语言用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。

JAVA RMI极大地依赖于接口。在需要创建一个远程对象时,程序员通过传递一个接口来隐藏底层实现细节。客户端得到的远程对象句柄正好与本地的根代码连接,由后者负责透过网络通信。

服务端

接口类:UserDao.java

package com.inface;


public interface UserDao{
      
     public String getUserList();  
     public int sum(int a, int b);  
}

实现类:UserDaoImpl.java

package com.impl;

import com.inface.UserDao;

  
public class UserDaoImpl implements UserDao {  
  
    public String getUserList() {  
        return "Hello,Get the user list from database!";  
    }  
  
    public int sum(int a, int b) {  
        return a+b;  
    }  

配置文件:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>  
  
<beans:beans xmlns="http://www.springframework.org/schema/security"  
    xmlns:beans="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/security  
    http://www.springframework.org/schema/security/spring-security-3.0.xsd">  
  
    <!-- 实现类 -->
    <beans:bean id="userDaoRmi" class="com.impl.UserDaoImpl">   
    </beans:bean>   
      
<beans:bean id="userSvcExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">   
        <!-- 服务类 (实现类)-->
        <beans:property name="service" ref="userDaoRmi"/>   
        <!-- 服务名 -->
        <beans:property name="serviceName" value="userDaoService"/> 
        <!-- 服务接口 -->  
        <beans:property name="serviceInterface" value="com.inface.UserDao"/> 
        <!-- 服务端口 -->  
        <beans:property name="registryPort" value="9111"/>   
    </beans:bean>   
</beans:beans>

测试类:TestRMI

package com.test;  
  
  
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  

import com.inface.UserDao;
  
public class TestRMI {  
    public static void main(String[] args) {  
         ApplicationContext ctx = new ClassPathXmlApplicationContext(  
         "applicationcontext.xml");  
        System.out.println("RMI服务伴随Spring的启动而启动了.....");     
    }  
}  

客户端

配置文件:applicationContext.xml
  <?xml version="1.0" encoding="UTF-8"?>  
  
<beans:beans xmlns="http://www.springframework.org/schema/security"  
    xmlns:beans="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/security  
    http://www.springframework.org/schema/security/spring-security-3.0.xsd">  
      
    <beans:bean id="userDaoProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">   
        <beans:property name="serviceUrl" value="rmi://localhost:9111/userDaoService"/>   
        <beans:property name="serviceInterface" value="com.inface.UserDao"/>   
    </beans:bean>  
      
</beans:beans>  

测试类:(此处要将服务端的接口拷过来)

package com.test;  
  
  
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  

import com.inface.UserDao;
  
public class TestRMI {  
    public static void main(String[] args) {  
         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");  
         UserDao userDao = (UserDao) ctx.getBean("userDaoProxy");  
         System.out.println(userDao.getUserList());  
         System.out.println(userDao.sum(145, 487));  
    }  
}  

转载于:https://my.oschina.net/yangfeima/blog/912293

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值