Spring Rmi Demo

作者:李東龍

      最近做的工程中用的了Spring Rmi技術,用他來實現java項目之間的遠程方法調用。使用非常簡單,下面給大家一個小demo。

      服務端接口:

package com.server;

public interface ServerRmiI {
    public String sayHi(String name);
}


       服務端實現類:

package com.server;

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

public class ServerRmiImpl implements ServerRmiI {

	@Override
	public String sayHi(String name) {
		return "Hi," + name;
	}

	
	//這個方法是爲了啓動發佈服務的
	public static void main(String[] args) {
		System.out.println("服務啓動中……");
		ApplicationContext context = new ClassPathXmlApplicationContext("classpath:com/server/applicationContext-bean.xml");
		context.getBean("serverTest");
		System.out.println("服務啓動完成");
	}

}

         有了實現類,之後就可以寫配置文件了,通過實現類的main方法,讀取配置文件發佈 rmi接口。spring配置:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans>   
     <bean id="rmiserver" class="com.server.ServerRmiImpl"/>
     <bean id="serverTest" class="org.springframework.remoting.rmi.RmiServiceExporter">
       <property name="service" ref="rmiserver"/><!-- 接口實現類 -->
       <property name="serviceName" value="serverRmiTest"/><!-- 發佈的服務名稱 -->
       <property name="serviceInterface" value="com.server.ServerRmiI"/><!--接口 -->
       <property name="registryPort" value="1021"/><!-- 端口號 -->
     </bean>
</beans>

       有了這些你就可以運行main方法發佈服務了!

       接下來咱們完成客戶端的調用和配置! 在做配置之前,必須要做的就是把服務端的接口拿到客戶端。 無論採取那種方式, 打成jar包也好,直接把接口連帶路徑全部都拿到客戶端。 rmi要求客戶端的接口地址和服務端的接口地址相同纔可以。

        客戶端的配置:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans>   
     <bean id="clentrmi" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
	<!-- 服務發佈url -->
     	<property name="serviceUrl" value="rmi://127.0.0.1:1021/serverRmiTest"/>
        <!-- 接口地址 -->
     	<property name="serviceInterface" value="com.server.ServerRmiI"/>
     </bean>
</beans>
 

        有了這樣的配置之後,客戶端就可以直接調用了!  

     
package test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.server.ServerRmiI;

public class TestRmi {
	
	public static void main(String[] args) {

	  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-clent.xml");
          ServerRmiI rmiI = (ServerRmiI) context.getBean("clentrmi");
          System.out.println(rmiI.sayHi("rmi"));//調用方法
      
	}
	
} 
       這樣一個rmi的例子就誕生了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章