Spring 实现RMI

最近研究JAVA的远程调用机制RMI,发现用纯JAVA方式调试痛苦无比,后来发现Spring的解决方案非常,但网上写的东西大多不完整,自己调试也是费了百般周折,以下是我写的例子,供大家参考使用.

1.新建服务器端JAVA工程SpringServer:

 a.添加spring相应的jar包,注意一定要添加commons-logging和spring-remoting两个包

 b.在工程里新建一个server包(主要是方便管理,名字可任取)

 c.在server包下新建一个调用的接口类Calculator,注意这个接口类在客户端也应存在

 

package server;

public interface Calculator {
 public String sayhello();
}

 d.在server包下新建接口Calculator的实现类CalculatorImpl

 

package server;

public class CalculatorImpl implements Calculator{

 @Override
 public String sayhello() {
  // TODO Auto-generated method stub
  return "hello,this is allen";
 }

}

 

 e.在server包下新建服务器端的测试类CalculatorServer

package server;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CalculatorServer {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  System.out.println("server start");
 }

}

 f.配置spring的applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="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-2.0.xsd">

 <bean id="calculatorService" class="server.CalculatorImpl"></bean>
 <!-- 服务器端设置 -->
 <bean id="serviceExporter"
  class="org.springframework.remoting.rmi.RmiServiceExporter">
  <property name="serviceName">
   <value>calService</value>
  </property>
  <property name="service">
   <ref bean="calculatorService" />
  </property>
  <property name="serviceInterface">
   <value>server.Calculator</value>
  </property>
  <property name="registryPort">
   <value>2008</value>
  </property>
 </bean>
</beans>

 

2.新建客户端JAVA工程SpringClient:

 a.与服务端一样,添加spring相应的jar包

 b.在工程里新建一个client包

 c.在client包下新建调用的接口类Calculator

package client;

public interface Calculator {
 public String sayhello();
}

 d.在client包下新建客户端的测试类CalculatorClient

package client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class CalculatorClient {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
  Calculator calculator=(Calculator)context.getBean("calculatorService");
  String output=calculator.sayhello();
  System.out.println("why?"+output);
 }

}

 e.配置spring的applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="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-2.0.xsd">

 <!-- 客户端设置 -->
  <bean id="calculatorService"
        class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
        <property name="serviceInterface">
            <value>client.Calculator</value>
        </property>
        <property name="serviceUrl">
            <value>rmi://localhost:2008/calService</value>
        </property>
    </bean>
</beans>

 

 

3.分别执行服务器端和客户端进行测试

 a.执行服务器端CalculatorServer,输出

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
server start

 b.执行客户端CalculatorClient

log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
why?hello,this is allen

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值