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

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

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

    spring httpInvoke 解決遠程調(diào)用遠程的類的方法

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

    spring httpInvoke 基于spring架構的服務器之間的遠程調(diào)用實現(xiàn)。通過spring httpInvoke,可以調(diào)用遠程接口,進行數(shù)據(jù)交互、業(yè)務邏輯操作

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

    [java] view plain copy
    1. public  class User implements Serializable{//必須實現(xiàn)serializable接口,遠程調(diào)用的基礎  
    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.     //實現(xiàn)userService  
    12. }  
    重要的配置文件來了。。。。
    remote-servlet.xml放在項目根目錄下面,跟web.xml相同的級別

    暴露給調(diào)用端:服務的實現(xiàn),接口

    [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>  
    暴露了服務的實現(xiàn)和接口,那么怎么訪問服務呢?
    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共調(diào)用一方使用

    [html] view plain copy
    1. <!-- spring遠程調(diào)用 -->  
    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>  
    到處為止:被調(diào)用端一方完畢!!!!
    客戶端調(diào)用:

    [html] view plain copy
    1. <!-- 通過http連接遠程系統(tǒng) -->  
    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容器調(diào)用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"> //使用指定的執(zhí)行器執(zhí)行  
    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兩個屬性
    優(yōu)化執(zhí)行器:多線程===被調(diào)用端響應時間縮短很多

    [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 每個主機的最大并行鏈接數(shù),默認為2 
    public static final int DEFAULT_MAX_HOST_CONNECTIONS = 2; 
    maxTotalConnections 客戶端總并行鏈接最大數(shù),默認為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

    導航

    統(tǒng)計

    公告

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

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    EJB學習

    Flex學習

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 最近中文字幕无吗高清免费视频| 日本一区免费电影| 亚洲av永久无码精品三区在线4| 丁香花免费完整高清观看| 精品韩国亚洲av无码不卡区| 亚洲欧洲∨国产一区二区三区| 在线成人爽a毛片免费软件| 亚洲AV无码成人精品区狼人影院 | 免费人成再在线观看网站 | 日本亚洲视频在线| 精品久久久久成人码免费动漫| 免费观看亚洲人成网站| 亚洲国产天堂久久综合网站| 超pen个人视频国产免费观看| a在线观看免费视频| 亚洲爆乳成av人在线视菜奈实| 亚洲成av人在线视| 国产男女猛烈无遮挡免费网站| 中文字幕无码毛片免费看| 亚洲色一区二区三区四区 | 亚洲一区二区三区高清在线观看 | 亚洲色图激情文学| 亚洲VA中文字幕无码毛片| 免费国产一级特黄久久| 波多野结衣免费在线观看| aa级女人大片喷水视频免费| 亚洲乱亚洲乱妇24p| 亚洲资源在线视频| 亚洲女同成av人片在线观看| 国产乱人免费视频| 无码中文在线二区免费| 99久久国产免费中文无字幕| 男女交性无遮挡免费视频| 中文有码亚洲制服av片| 久久久久亚洲av无码专区导航| 亚洲精品国精品久久99热| 日本黄页网站免费| 成人在线视频免费| 久久精品免费一区二区| 久久aⅴ免费观看| 成人片黄网站色大片免费观看APP|