【问题标题】:Expose POJO as webservice with CXF without deploying as WAR file使用 CXF 将 POJO 公开为 Web 服务,而不部署为 WAR 文件
【发布时间】:2013-06-23 16:47:09
【问题描述】:

我需要编写一个带有嵌入式 Jetty 或 Tomcat 的服务器,它能够以编程方式使用 apache CXF 将 POJO 公开为 Web 服务,即无需将其部署为 .war 文件。 CXF 可以做到这一点吗?

谢谢。

【问题讨论】:

  • 使用 Jetty 或 Tomcat 是硬性要求还是任何其他嵌入式服务器都可以?如果是这样,您可以简单地使用 Java 附带的服务器。
  • 好吧,我希望 Jetty 或 Tomcat 成为 servlet 引擎。但我也愿意接受其他选择。基本上,要求是将 POJO 公开为 Web 服务,只需使用注释即可。

标签: tomcat jax-ws cxf war embedded-jetty


【解决方案1】:

Java 带有一个您可以使用的嵌入式服务器。使用 @WebService 注释您的 POJO 就足够了,您不需要额外的包装。只需创建一个 Web 服务实例并使用 Endpoint.publish() 进行部署:

YourPojo service = new YourPojo(); // the class annotated with @WebService
Endpoint.publish("http://localhost:2000/serviceAddress", service);

嵌入式服务器适用于简单场景,但请注意它会在任意负载下扩展。

现在,如果您想将此服务与 CXF 一起使用,您只需将 CXF 库放入其构建路径中。 Endpoint 类的部署机制保持不变。这是解释此示例的a tutorial from CXF。 CXF 似乎自动将默认服务器替换为 Jetty。至少这是 CXF 在启动时打印到我的控制台的内容:

Jun 24, 2013 1:36:29 PM org.eclipse.jetty.server.Server doStart
INFO: jetty-8.1.7.v20120910
Jun 24, 2013 1:36:29 PM org.eclipse.jetty.server.AbstractConnector doStart
INFO: Started SelectChannelConnector@localhost:2000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多