spring mvc 實現遠端服務呼叫的幾種方式
org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter 實現遠端服務呼叫
(1)httpinvoker方式 伺服器客戶端都是spring時推薦這種方式
服務端 必須要實現 bean實體類 service介面類 serviceImpl服務實現類
客戶端只需拷貝 bean 實體類 service介面類(注意 ,客戶端 bean,service類要和服務端bean,service類包路徑相同,比如都是
com.hlzt.csm.model.DataPlatFormCountBean,不然會報找不到類,而且 bean要序列化 public class DataPlatFormCount implements Serializable; 如果服務端有 序列化的private static final long serialVersionUID = 1L號,客戶端也必須有,如果服務端沒有此id,客戶端也不要有此id,不然會出錯。service類的包路徑也要相同,最好服務端寫好後直接把實體類和service服務介面類打包,拷貝到客戶端,以免造成兩端不同。
伺服器端要在spring-mvc配置檔案 spring-mvc-servlet.xml中加入以下(注意是在spring-mvc的配置檔案中,不是spring的配置檔案)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 啟用spring mvc 註解 --> <mvc:annotation-driven /> <!-- 設定使用註解的類掃描的包 --> <context:component-scan base-package="com.hlzt.csm" /> <!--不被spring mvc過濾器 DispatcherServlet,前提檔案不能放在WEB-INF下,引用必須使用jstl的c標籤--> <mvc:default-servlet-handler/> <!--指定自定義 <mvc:default-servlet-handler default-servlet-name="StaticServlet"/> --> <!-- 指定靜態檔案的路徑對映 可以訪問 WEB-INF下 訪問直接src=static1/js/1.js--> <!-- <mvc:resources mapping="/static1/**" location="/WEB-INF/static/"/> --> <!-- 對轉向頁面的路徑解析。prefix:字首, suffix:字尾 --> <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> --> <!-- 下面是需要加入的--> <!-- 下面是需要加入的 ,id要和SimpleUrlHandlerMapping中的 prop的key相同,name要和rop key對應的value相同,否則會導致找不到請求的地址--> <bean id="csmDataCountService" name="/CsmDataCountSer.shtm" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service" ref="csmDataCountSerImpl"></property> <property name="serviceInterface" value="com.hlzt.csm.service.CsmDataCountSer"> </property> </bean> <!-- 遠端服務的URL ,key值表示客戶端請求的地址--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/CsmDataCountSer.shtm">csmDataCountService</prop> </props> </property> </bean> </beans>
服務端 web.xml的配置
客戶端配置
客戶端 spring的xml檔案配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd" default-lazy-init="true"> <bean id="csmDataCountSer" name="csmDataCountSer" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://localhost:80/chat/CsmDataCountSer.shtm</value> </property> <property name="serviceInterface"> <value>com.hlzt.csm.service.CsmDataCountSer</value> </property> </bean> </beans>
注意的是 id="csmDataCountSer" 本人測試結果是 此例項不能在java中通過 rource 或Autowired自動注入,而要通過手工載入方式獲得
ApplicationContext context =new ClassPathXmlApplicationContext("/spring/spring-remote.xml");
CsmDataCountSer csmDataCountSer=(CsmDataCountSer)context.getBean("csmDataCountSer");
(2)spring RMI方式
首先看下例項程式目錄結構:
Spring中釋出RMI服務(ZLv_RMIServerWithSpring):
(1) 定義介面MessageProvider及介面中供呼叫的方法(MessageProvider.java):
?1 2 3 4 5 |
package org.thera.rmi.service;
public interface MessageProvider {
public String queryForMessage(String name);
}
|
(2) 實現MessageProvider介面(MessageProviderImpl.java):
?1 2 3 4 5 6 7 8 9 10 |
package org.thera.rmi.service;
public class MessageProviderImpl implements MessageProvider {
@Override
public String queryForMessage(String name) {
return "Hello, " + name;
}
}
|
做好了上述準備,下面我們就可以通過Spring中整合RMI,方便的釋出RMI服務端
(3) Spring配置檔案作如下配置(context.xml):
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
相關推薦spring mvc 實現遠端服務呼叫的幾種方式org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter 實現遠端服務呼叫 (1)httpinvoker方式 伺服器客戶端都是spring時推薦這種方式 服務端 必須要實現 bean實體類 使用Spring框架實現遠端服務暴露與呼叫一、前言 Spring框架提供了通過HTTP協議實現遠端呼叫的方式,具體是呼叫方使用HttpInvokerProxyFactoryBean生成一個代理物件,通過代理物件遠端通過http服務呼叫服務提供方法的服務,服務提供方則通過HttpInvokerServiceExporter在服務端暴漏遠 spring mvc獲取絕對路徑的幾種方法col 文件 結果 ret 項目 tps span ppr etc 1.首先如果是在一個controller方法中,則很簡單,直接用下面語句。 1 @RequestMapping("categoryHome") 2 public ModelAndVie cxf呼叫服務的幾種方式客戶端匯入的包 方式一 JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance(); Client client = clientFactory.createClien 【JAVA】Spring HTTP Invoker 遠端服務呼叫遠端服務呼叫在實際的專案中很常用,在多重方式中,HTTP應該算是比較常用的,對客戶端來說也很方便 但是spring http invoker只支援JAVA語言,結構簡單,只依賴與spring框架本身。 首先我們來看服務端(依賴於WEB容器來啟動,tomcat/jetty) PHP實現定時任務的幾種方式選項 等待 process 一個 temp 表示 服務器 實現 ref 關於定時任務,之前以前認識了一種最常用的:crontab定時任務。通過linux的定時任務去實現。今天又認識了一下php實現定時方式的其它方式,總結一下。 一 服務器定時任務 服務器定時任務,其實就是u 深入研究Spring-IoC :容器建立的幾種方式1.前言 本文為對tiny-spring的學習解讀,程式碼參考自tiny-spring。一個手寫的Spring簡易版框架。 前面已經提到了Spring IOC容器的建立大致分為3個步驟。但是這個三個步驟是有一個演進的過程的,Spring容器建立方式前後有6種,從最基本的例項化建立 設計模式之單例模式【內附物件例項化幾種方式、實現執行緒安全幾種方式】繼續來複習常用的設計模式-單例模式,順便回憶一下執行緒安全的幾種實現方式。 一、什麼是單例模式 單例模式,簡單常用的一種設計模式,也很好的體現了程式碼控制物件在記憶體數量的一種方式,主要分2種實現方式: ①餓漢式,執行緒安全 ②懶漢式,執行緒不安全(新增鎖機制,可以實現執行緒安全) Spring MVC異常統一處理的三種方式Spring 統一異常處理有 3 種方式,分別為: 使用 @ ExceptionHandler 註解 實現 HandlerExceptionResolver 介面 使用 @controlleradvice 註解 HandlerExceptionReso JS實現非同步程式設計的幾種方式轉載出處:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html Javascript非同步程式設計的4種方法 作者:&nbs Spring MVC 統一異常處理的兩種方式沒有廢話,直接來。 方式一 通過@ControllerAdvice 和 @ExceptionHandler 方法。 @ControllerAdvice 這個註解,可以將對於控制器的全域性配置放到註解了@ControllerAdvice的類上,它結合了 @Component 所以可 iOS 實現圖片圓角的幾種方式第一種方法:通過設定layer的屬性 最簡單的一種,但是很影響效能,一般在正常的開發中使用很少. UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 10 Nginx:實現負載均衡的幾種方式要理解負載均衡,必須先搞清楚正向代理和反向代理。 注: 正向代理,代理的是使用者。 反向代理,代理的是伺服器 什麼是負載均衡 當一臺伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰,讓使用者有更好的體驗 【Nginx】實現負載均衡的幾種方式要理解負載均衡,必須先搞清楚正向代理和反向代理。 正向代理與反向代理【總結】 注: 正向代理,代理的是使用者。 反向代理,代理的是伺服器 什麼是負載均衡 當一臺伺服器的單位時間內的訪問量越大時,伺服器壓力就越大,大到超過自身承受能力時,伺服器就會崩潰。為了避免伺服器崩潰 Spring 獲取Request,Response物件的幾種方式--未驗證第一種、引數 @RequestMapping("/test") @ResponseBody public void saveTest(HttpServletRequest req, HttpServletResponse resp){ } 第二種、註解 @ js實現輪播效果幾種方式小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 輪播呢,也是各種網站上常見的一種展示效果,這裡我來寫一寫實現輪播的一些簡單方法。 // Python實現Singleton模式的幾種方式使用python實現設計模式中的單例模式。單例模式是一種比較常用的設計模式,其實現和使用場景判定都是相對容易的。本文將簡要介紹一下python中實現單例模式的幾種常見方式和原理。一方面可以加深對python的理解,另一方面可以更加深入的瞭解該模式,以便實際工作中能更加靈活的使用單例設計模式。 本文將介紹常見的 spring boot初始化資源的幾種方式轉自:https://www.jb51.net/article/145143.htm 實現 CommandLineRunner 介面,並實現它的 run() 方法,在該方法中編寫初始化邏輯 @Component public class MyCommandLineRun PHP實現定時任務的幾種方式和詳解定時執行任務對於一個網站來說,是一個比較重要的任務,比如定時釋出文件,定時清理垃圾資訊等,現在的網站大多數都是採用PHP動態語言開發的,而對於PHP的實現決定了它沒有Java和.Net這種AppServer的概念,而http協議是一個無狀態的協議,PHP只能被使用者觸 Spring boot實現熱部署的兩種方式詳解熱部署是什麼大家都知道在專案開發過程中,常常會改動頁面資料或者修改資料結構,為了顯示改動效果,往往需要重啟應用檢視改變效果,其實就是重新編譯生成了新的 Class 檔案,這個檔案裡記錄著和程式碼等對應的各種資訊,然後 Class 檔案將被虛擬機器的 ClassLoader 載入。而熱部署正是利用了這個特點,它 |