2009-08-13 122 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