Spring HttpIvoker實現Java的遠程調用


Spring HttpInvoker一種JAVA遠程方法調用框架實現,使用的是HTTP協議,允許穿透防火牆,使用JAVA系列化方式,但僅限於Spring應用之間使用,即調用者與被調用者都必須是使用Spring框架的應用。基本原理如下:

在server端,springAOC管理着controller(bean),並暴露出遠程調用的接口。在Client端,借助spring產生一個代理對象,通過代理對象實現與服務端的交互。

  • 服務器端配置

    1. 加入jar包

    2. 在.xml中配置spring遠程調用的servlet:

  <servlet>
      <servlet-name>service</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>service</servlet-name>
      <url-pattern>*.service</url-pattern>
  </servlet-mapping>

    3.在spring配置文件中配置並發布遠程調用端口:

<!-- service導出器,將pojo轉換成Spring所需的controller對象 -->
    <bean name="ss.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="serviceInterface">
            <value>com.spring.service.HelloService</value>
        </property>
        <property name="service" ref="HelloService"></property>
    </bean>
  • 客戶端配置

    1.加入jar包,將服務器端service接口(並不需要實現類)和所用bean代碼導入過來;

    2. 在spring.xml中配置代理對象:

<!--  配置代理 -->
<
bean class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceInterface"> <value>com.spring.service.HelloService</value> </property> <property name="serviceUrl" >
        <!-- tomcat訪問服務器的地址 --> <value>http://localhost:8989/springservice/ss.service</value> </property> </bean>

配置好以后測試調用即可,注意:此遠程調用方法傳輸的是序列化的對象,若需要傳輸自定義對象時,對應的類需要序列化,即實現Serializable接口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM