熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Spring2.5整合RMI技術

2013-11-23 20:33:20  來源: Java開源技術 

  Java的RMI技術使用起來比較麻煩有兩點服務發布和調用服務

  通過Spring的RMI支持可以非常容易的暴露任何的服務

  下面是之前一篇《Java RMI之HelloWorld篇》文章的基礎上加入了Spring的框架來實現的例子

  環境jdk

  springframeworkSEC

  所用的第三方包優先從Spring的lib包中獲取以獲取最佳的兼容性

  所依賴的jar包

  

  服務端實現

  第一服務接口和以前不一樣了不用實現遠程接口了

   package lavasoftsturmi;

/**
* 定義一個遠程接口
*
* @author leizhimin ::
*/

public interface HelloService {

        /**
         * 簡單的返回Hello World!字樣
         *
         * @return 返回Hello World!字樣
         */
        public String helloWorld();

        /**
         * 一個簡單的業務方法根據傳入的人名返回相應的問候語
         *
         * @param someBodyName 人名
         * @return 返回相應的問候語
         */
        public String sayHelloToSomeBody(String someBodyName);
}

  服務實現類

   package lavasoftsturmi;

/**
* 遠程的接口的實現
*
* @author leizhimin ::
*/
public class HelloServiceImpl implements HelloService {
        public HelloServiceImpl() {
        }

        /**
         * 簡單的返回Hello World!字樣
         *
         * @return 返回Hello World!字樣
         */
        public String helloWorld() {
                return Hello World!;
        }

        /**
         * 一個簡單的業務方法根據傳入的人名返回相應的問候語
         *
         * @param someBodyName 人名
         * @return 返回相應的問候語
         */
        public String sayHelloToSomeBody(String someBodyName) {
                return 你好 + someBodyName + !;
        }
}

  Spring配置rmi服務

   <?xml version= encoding=UTF?>
<!DOCTYPE beans PUBLIC //SPRING//DTD BEAN//EN
                beansdtd>
<beans>
        <bean id=helloService class=lavasoftsturmiHelloServiceImpl/>

        <bean id=serviceExporter class=orgspringframeworkremotingrmiRmiServiceExporter>
                <property name=service ref=helloService/>
                <! 定義服務名 >
                <property name=serviceName value=hello/>
                <property name=serviceInterface value=lavasoftsturmiHelloService/>
                <property name=registryPort value=/>
        </bean>
</beans>

  服務端測試

   package lavasoftsturmi;

import orgntextApplicationContext;
import orgntextsupportClassPathXmlApplicationContext;

/**
* 通過Spring發布RMI服務
*
* @author leizhimin ::
*/
public class HelloHost {
        public static void main(String[] args) {
                ApplicationContext ctx = new ClassPathXmlApplicationContext(/applicationContext_rmi_serverxml);
                Systemoutprintln(RMI服務伴隨Spring的啟動而啟動了);
        }
}

  啟動後如圖所示

  

  客戶端調用測試

  客戶端調用有兩種方式一種是使用Spring一種不使用這裡僅介紹使用Spring的情況

  在Spring中配置客戶端要調用服務

   <?xml version= encoding=UTF?>
<beans
                xmlns=
                xmlns:xsi=instance
                xsi:schemaLocation= beansxsd>
        <bean id=helloService class=orgspringframeworkremotingrmiRmiProxyFactoryBean>
                <property name=serviceUrl value=rmi://:/hello/>
                <property name=serviceInterface value=lavasoftsturmiHelloService/>
        </bean>

        <bean id=helloServiceClient class=lavasoftsturmiHelloClient>
                <property name=helloService ref=helloService/>
        </bean>
</beans>

  客戶端測試代碼

   package lavasoftsturmi;

import orgntextApplicationContext;
import orgntextsupportClassPathXmlApplicationContext;

import javarmiRemoteException;

/**
* 通過Spring來調用RMI服務
*
* @author leizhimin ::
*/
public class HelloClient {
        private HelloService helloService;

        public static void main(String[] args) throws RemoteException {
                ApplicationContext ctx = new ClassPathXmlApplicationContext(/applicationContext_rmi_clientxml);
                HelloService hs = (HelloService) ctxgetBean(helloService);
                Systemoutprintln(hshelloWorld());
                Systemoutprintln(hssayHelloToSomeBody(Lavasoft));
        }

        public void setHelloService(HelloService helloService) {
                thishelloService = helloService;
        }
}

  運行結果

  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28662.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.