<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    spring httpInvoke 解決遠程調用遠程的類的方法

    http://zhidao.baidu.com/link?url=6FrnwvBQEZhjM-ooNCuiAra7T6qi9FsFhFvkHBKaOjqovZR86OCsIePi-05nM-fxRrlInEGbElSxlhgO6X7JsaGNdQdNrQ2xE58wglgeQO3 http://blog.csdn.net/liaq325/article/details/8281550 摘自以上 spring httpInvoke

    spring httpInvoke 基于spring架構的服務器之間的遠程調用實現。通過spring httpInvoke,可以調用遠程接口,進行數據交互、業務邏輯操作

    服務器端:(被調用一方)

    [java] view plain copy
    1. public  class User implements Serializable{//必須實現serializable接口,遠程調用的基礎  
    2.     private String username;  
    3.     private Date birthday;  
    4.     //構造方法  
    5.     //set get 方法  
    6. }  
    7. public interface UserService{  
    8.     User getUser(String username);  
    9. }  
    10. public UserServiceImpl implements UserService{  
    11.     //實現userService  
    12. }  
    重要的配置文件來了。。。。
    remote-servlet.xml放在項目根目錄下面,跟web.xml相同的級別

    暴露給調用端:服務的實現,接口

    [html] view plain copy
    1. <bean id="userService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">  
    2.     <property name="service">  
    3.         <bean class="com.cd.Liaq.UserServiceImpl"/>  
    4.     </property>  
    5.     <property name="serviceInterface">  
    6.         <value>com.cd.Liaq.UserService</value>  
    7.     </property>  
    8. </bean>  
    暴露了服務的實現和接口,那么怎么訪問服務呢?
    spring封裝訪問url

    [html] view plain copy
    1. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
    2.     第一種:<property name="urlMap">  
    3.         <map>  
    4.             <entry key="TestUser" value-ref="userService"/>  
    5.         </map>  
    6.     </property>  
    7.     第二種:<prop key="/TestUser">userService</prop>  
    8. </bean>  
    web.xml:配置dispatcherServlet共調用一方使用

    [html] view plain copy
    1. <!-- spring遠程調用 -->  
    2. <servlet>  
    3.     <servlet-name>remote</servlet-name>  
    4.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    5.     <load-on-startup>1</load-on-startup>  
    6. </servlet>  
    7. <servlet-mapping>  
    8.     <servlet-name>remote</servlet-name>  
    9.     <url-pattern>/remoting/*</url-pattern>  
    10. </servlet-mapping>  
    到處為止:被調用端一方完畢!!!!
    客戶端調用:

    [html] view plain copy
    1. <!-- 通過http連接遠程系統 -->  
    2. <bean id="memberService"  
    3.     class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">  
    4.     <property name="serviceUrl">  
    5.         <value>http://192.9.200.123:8080/MemberSystem/remoting/memberService</value>  
    6.     </property>  
    7.     <property name="serviceInterface">  
    8.         <value>com.cd.Liaq.UserService</value>  
    9.     </property>  
    10. </bean>  
    通過spring容器調用UserService,用到HttpInvokerProxyFactoryBean工廠,配置serviceUrl和serviceInterface
    為了提高效率:客戶端使用Commons-HttpClient,導入改包,改寫配置

    [html] view plain copy
    1. <bean id="memberService"  
    2.     class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">  
    3.     <property name="serviceUrl">  
    4.         <value>http://192.9.200.123:8080/MemberSystem/remoting/memberService</value>  
    5.     </property>  
    6.     <property name="serviceInterface">  
    7.         <value>com.cd.Liaq.UserService</value>  
    8.     </property>  
    9.      <property name="httpInvokerRequestExecutor"> //使用指定的執行器執行  
    10.         <ref bean="httpInvokerRequestExecutor" />    
    11.     </property>    
    12. </bean>  
    13. <bean id="httpInvokerRequestExecutor" class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">    
    14.     <property name="httpClient">    
    15.         <bean class="org.apache.commons.httpclient.HttpClient">    
    16.             <property name="connectionTimeout" value="2000" />    
    17.             <property name="timeout" value="5000" />    
    18.         </bean>    
    19.     </property>    
    20. </bean>    

    配置超時時間timeout和連接超時connectionTimeout兩個屬性
    優化執行器:多線程===被調用端響應時間縮短很多

    [html] view plain copy
    1. <bean id="httpInvokerRequestExecutor" class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">    
    2.     <property name="httpClient">    
    3.         <bean class="org.apache.commons.httpclient.HttpClient">    
    4.             <property name="connectionTimeout" value="2000" />    
    5.             <property name="timeout" value="5000" />    
    6.             <property  name="httpConnectionManager">//控制連接  
    7.                     <ref  bean="multiThreadedHttpConnectionManager" />    
    8.             </property>    
    9.         </bean>    
    10.     </property>    
    11. </bean>    
    12. <bean id="multiThreadedHttpConnectionManager" class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager">    
    13.     <property name="params">    
    14.         <bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">    
    15.             <property name="maxTotalConnections"  value="600" />    
    16.             <property name="defaultMaxConnectionsPerHost" value="512" />    
    17.         </bean>    
    18.     </property>    
    19. </bean>    
    httpClient的3.1版本不支持這種配置

    [html] view plain copy
    1. <property  name="connectionTimeout" value="2000" />      
    2. <property  name="timeout"  value="5000" />    

    另外httpClient本身也是多線程的。。HttpClient that uses a default MultiThreadedHttpConnectionManage
    <bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">  
        <property  name="maxTotalConnections"  value="600" />  
        <property  name="defaultMaxConnectionsPerHost"  value="512" />  
    </bean>  
    maxConnectionsPerHost 每個主機的最大并行鏈接數,默認為2 
    public static final int DEFAULT_MAX_HOST_CONNECTIONS = 2; 
    maxTotalConnections 客戶端總并行鏈接最大數,默認為20  
    public static final int DEFAULT_MAX_TOTAL_CONNECTIONS = 20; 

    posted on 2016-06-19 10:29 youngturk 閱讀(2257) 評論(0)  編輯  收藏 所屬分類: 筆試題

    <2016年6月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    導航

    統計

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結構
    4 口語英語

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久亚洲欧洲日产国码aⅴ| a毛片在线还看免费网站| 久久精品国产精品亚洲精品| 国产三级在线观看免费| 国产免费拔擦拔擦8X高清在线人| 亚洲人成自拍网站在线观看| 亚洲激情视频在线观看| 国产亚洲美女精品久久久| 色视频色露露永久免费观看| 3d动漫精品啪啪一区二区免费| 国产精品无码免费专区午夜| 亚洲av中文无码乱人伦在线观看| 亚洲国产高清在线精品一区| 亚洲成AV人片一区二区密柚| 中文亚洲成a人片在线观看| 国产免费观看网站| 全免费一级毛片在线播放| 最近中文字幕无免费| 久久久久免费精品国产| 一级毛片试看60分钟免费播放| 亚洲国产精品网站在线播放| 亚洲av乱码一区二区三区香蕉| 久久精品国产亚洲麻豆| 色噜噜亚洲精品中文字幕| 四虎影视精品永久免费网站| 免费观看的a级毛片的网站| 九九精品免费视频| 中文字幕免费在线| 亚洲成人免费在线| 国产永久免费高清在线| 一区二区免费电影| h视频在线观看免费| 男女男精品网站免费观看 | 东北美女野外bbwbbw免费| 免费一级做a爰片久久毛片潮| 免费国产va视频永久在线观看| 国产精品亚洲专一区二区三区| 亚洲国产精品自在自线观看| 亚洲中文字幕久久精品无码A| 国产精品亚洲综合久久| 国产精品高清视亚洲一区二区|