使用CXF将POJO作为Web服务公开,而不部署为WAR文件

时间:2013-06-23 16:47:09

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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