Java:使用端点将webservice发布到tomcat服务器

Wil*_*ill 11 java web-services jax-ws endpoint tomcat6

我正在创建一个简单的SOAP Web服务.我要确保它在tomcat Web服务上运行.

我试图用JAX-WS实现这个(参见代码)

我的问题是:Endpoint.publish是否使用tomcat服务器来托管这个或者它是一种迷你玻璃鱼类服务器?

我应该扩展UnicastRemoveObject或类似的东西吗?

理想情况下,它可以打包成.WAR并放入目录中然后才能工作.

它似乎不适用于我安装的tomcat服务器,因为它说端口已经在使用中.我正在使用安装了tomcat6包的Ubuntu karmic,它也可能是我的用户没有权限发布到8080上运行的tomcat

我希望这个问题足够清楚

示例代码:

@WebService
public class UserAttributes {
    public static void main(String[] args) {
        UserAttributes instance = new UserAttributes();
        Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
            instance);
    }

    public string Hello() {
       return "Hello World";
    }
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 25

是否Endpoint.publish使用Tomcat服务器来承载这还是一个小型的GlassFish样的服务器呢?

JAX-WS RI Endpoint.publishAPI默认使用重量轻的HTTP服务器实现包含在Sun的Java SE 6,所以,不,它并没有使用嵌入式GlassFish的,也不是一个嵌入式的Tomcat,甚至更少现有的Tomcat安装:它使用的是嵌入式容器,即在同一个JVM中运行的东西.仅供参考,只要它们提供服务提供商实施(SPI),就可以插入其他实现.例如,Jetty 6 会这样做,请参阅J2se6HttpServerSPI.但我不会在这里详细介绍所有细节:)

它似乎不适用于我安装的tomcat服务器,因为它说端口已经在使用中.

如上所述,Enpoint.publishAPI不使用您现有的Tomcat安装.它使用自己的服务器,允许您部署Web服务,而无需打包和部署应用程序.它在开发过程中特别有用(因为它加速了事情).实际上,它非常方便.

现在,如果你有一个Tomcat服务器上的端口8082上运行,如果你尝试你发布Endpoint使用同一端口,因为你注意到的事情是行不通的.在开发期间使用不同(和未使用)的端口.

如果你想给你的Web服务到现有的Tomcat安装部署,那么你就必须将它们打包到在战争和部署在Tomcat这场战争.但这完全不同,与使用Endpoint.publishAPI 没有任何关系.