代码之家  ›  专栏  ›  技术社区  ›  Will

Java:使用端点向Tomcat服务器发布WebService

  •  11
  • Will  · 技术社区  · 15 年前

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

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

    我的问题是:endpoint.publish是使用Tomcat服务器来承载它,还是它是一种迷你Glassfish类型的服务器?

    我应该扩展单播删除对象还是类似的对象?

    理想情况下,它可以打包成一个.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";
        }
    }
    
    2 回复  |  直到 11 年前
        1
  •  25
  •   Bill the Lizard Alexis MP    12 年前

    Endpoint.publish 使用Tomcat服务器来托管它,还是它是一种迷你Glassfish类型的服务器?

    JAX-WS RI 终结点.publish 默认情况下,API使用轻量级 HTTP server implementation 这包括在Sun的Java SE 6中。所以没有 使用嵌入式Glassfish或嵌入式Tomcat,甚至更少地使用现有的Tomcat安装:它使用 嵌入的 容器,即在同一个JVM中运行的内容。仅供参考,只要其他实现提供 服务提供商实现 (SPI)。例如,Jetty 6是这样做的,请参见 J2se6HttpServerSPI . 但我不会在这里介绍所有的细节。)

    它似乎无法与我安装的Tomcat服务器一起工作,因为它说端口已经在使用中。

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

    现在,如果在端口8082上运行Tomcat服务器,并且尝试发布 Endpoint 使用相同的端口,事情不会像您注意到的那样工作。在开发期间使用不同的(和未使用的)端口。

    如果您想将Web服务部署到现有的Tomcat安装中,那么您必须将它们打包成一场战争,并将这场战争部署到Tomcat上。但这完全不同,与使用 终结点.publish 应用程序编程接口。

        2
  •  1
  •   Joseph    14 年前

    非常有趣。在我看来,嵌入式服务器还包含一个SOAP引擎来处理发送到该端口的SOAP消息。这是一个嵌入式SOAP引擎还是使用流行的SOAP引擎之一(axis2、cxf、metro)