2009-08-13 109 views
4

我剛開始學習Java Web服務(JAX-WS)並且有一個問題。參考文檔總是談論Web服務容器。我的問題是:什麼是Web服務容器,爲什麼我們需要它。 我看到了JAX-WS的書一個簡單的例子「Java Web服務和運行」裏的Web服務使用發佈:Java Web服務容器

Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl()); 

這個例子並不需要我在一個Web服務器來承載Web服務/ App Server或任何容器。

我也能夠訪問此Web服務。

那麼什麼是容器,爲什麼我們需要它的Web服務?

回答

4

基本上你只需要一些可以運行Java servlets的東西。典型的例子是Tomcat,Glassfish,JBoss,Jetty等等。

這些Tomcat是最輕的重量,因爲它「僅」是一個servlet容器(JBoss和Glassfish是J2EE應用程序服務器),並且是servlet規範的參考實現。你會發現許多IDE集成和教程也使用它。

+0

謝謝cletus ..請你解釋爲什麼我們需要一個servlet容器... – user150014 2009-08-14 17:00:23

1

不同供應商(Websphere,Weblogic,JBoss)實現的Web服務規範是通過一個servlet實現的,並且您需要一個servelet容器來支持這個servlet。這個servlet專門用於處理基於SOAP的流量(帶有SOAP頭和正文的HTTP流量),而不是基於HTTP的瀏覽器發送的POST/GET。

0

您創建的Web服務正在容器中運行,在這種情況下,它是服務器。服務器可以運行多個應用程序,每個應用程序有自己的容器該容器是必需的,因爲它爲執行包含在源代碼中的Java提供了一個獨立的環境。

容器提供安全性,所以如果一個應用程序由於問題而崩潰,其他應用程序不會崩潰。根據實施情況,每個容器可以在自己的虛擬機中運行,也可以跨多個虛擬機運行。基本上他們在那裏運行在與其他代碼分離的環境中的代碼。

Here是一些較老的(ish)關於容器理念的文檔。基本上它們可以在不同的安全容器中運行,就像在Java中同時運行多個應用程序一樣,這些應用程序通過單個應用程序(Web服務器)進行控制。

+0

所以,你說當我們發佈一個web服務,就像我上面描述的那樣,jvm創建一個容器並在那個容器中運行webservice? ,或者是Web服務文檔中稱爲「容器」的JVM。你能解釋一下嗎? – user150014 2009-08-18 22:10:24

+0

我更新了我的答案,以包含幾年前來自Sun的容器的一些信息。這些概念沒有改變。 – scheibk 2009-08-24 14:47:27