由於專案的關係,接觸到spring的遠端服務呼叫,我主要複雜服務端的業務邏輯開發,而且先前的架子已經搭好了,所以先前並未感覺到發布服務的存在,等到想仔細看看遠端服務是怎麼配置的時候才發現沒有看懂,沒辦法只有看看《spring in action》,總算略知一二了。相比起spring的標準配置而言,專案的配置反而更複雜點,複雜在於那些個有關遠端服務的spring bean的配置都是個性化以後的,引數的設定都和標準不同,難怪我看不懂了,不過你如果熟悉原理以後就會發現萬變不離其中。
為了方便日後複習或者文件的完善的目的,還是現學現賣,看看spring中如何借助自己的元件發布我們的遠端服務。
在spring中提供了四種型別的遠端服務:rmi(老東西),hessian或burlap,http invoker,soap。如果我們去使用其中的任何一種去發布和呼叫遠端服務,其過程也大致相同。乙個乙個來吧。以下內容來自對《spring in action》的理解。或者可以參考spring 2.0 reference中
寫道尤其是後面兩個。以下是我的對乙個遠端服務請求過來的在**層次spring都在幹些什麼。
場景如下:
客戶端的配置如下:
<?xml version="1.0" encoding="utf-8" ?>
test.accountservice
伺服器端:web.xml部分內容
remoting org.springframework.web.servlet.dispatcherservlet 1
remoting-servelet.xml 好了:現在伺服器開始啟動了。我們只關心我們感興趣的地方,先睹為快吧,看看那只tomcat的log大部分是關於dispatcherservlet的log。下面看看服務端的兩個比較重要的類:
httpinvokeserviceexporter和******urlhandlemaping,有的時候可以只用前者就可以,這個時候預設使用
handlemap中去找對應的handle。
那handle是個什麼東東呢,handle一般是實現httpinvokeserviceexporter的乙個例項,而且設定了service,
serviceinte***ce等屬性,可以通過httpinvokerproxy訪問。。
好,到這裡一些大概可以想像的東西可以想到了,客戶端提交了乙個請求比如:
server/remoting.service,當這個請求
到達伺服器端的時候,負責處理這些個url的servelet正等著呢,很容易理解這個請求被拋給了remoting這個
dispatcherservelet。
remoting
org.springframework.web.servlet.dispatcherservlet1
dispatcherservelet本身也是乙個httpservlet在初始化的時候會呼叫inti,在初始化的過程中會呼叫
的gethandle
返回包裝過handle的handlerexecutionchain,如return new handlerexecutionchain(handler,
其實到這裡服務端的工作差不多了。
Spring遠端服務(RPC)
spring支援幾種不同的rpc模型,包括遠端方法呼叫 rmi caucho的hessian和burlap和spring自帶的http invoker。如下 無論選擇哪一種rpc模型,我們都會發現spring對每一種模型都提供了風格一致的支援。在所有的模型中,服務都作為spring所管理的bean配...
ssh遠端服務
不了解ssh協議的請自覺看百科,進入正題 當使用者想與遠端主機建立連線時 ssh user host the authenticity of host localhost 127.0.0.1 can t be established.rsa key fingerprint is09 95 34 79...
遠端登入服務
telnet是位於osi模型的第7層 應用層上的一種協議,是乙個通過建立虛擬終端提供連線到遠端主機終端 的tcp ip協議。這一協議需要通過使用者名稱和口令進行認證,是internet遠端登陸服務的標準協議。應用telnet協議能夠把本地使用者所使用的計算機變成遠端主機系統的乙個終端。它提供了三種基...