是否可以在没有web.xml的情况下设置apache-cxf?

时间:2015-08-20 09:27:26

标签: java web-services servlets cxf

是否可以通过“使用没有Spring且没有web.xml 文件的servlet传输”来创建带有apache cxf(soap / rest)的web服务?

2 个答案:

答案 0 :(得分:1)

不可能 该服务将需要Web部署描述符。

你可以扩展

  REST的

CXFNonSpringJaxrsServlet

  SOAP的

CXFNonSpringServlet

Apache CXF中的Web服务以避免使用Spring,但是您需要在web.xml中注册它们。

您必须使用Spring配置或web.xml。

参考:Apache CXF - How to register a SOAP service without Spring?

答案 1 :(得分:0)

有可能。我花了很多工作来解决我自己的项目,并认为我会分享。

在我的上下文中,我们使用OSGi HTTP服务使用Jersey Servlet容器发布JAX-RS资源,我想用CXF为JAX-WS资源做同样的事情。

扩展CXFNonSpringServlet的类应包含以下内容:

private Object obj; // JAX-WS resource singleton
@Override
public void loadBus(ServletConfig conf)
{
  super.loadBus(conf);

  JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
  factory.setBus(getBus());
  factory.setAddress("/some/path");
  factory.setServiceBean(obj);
  Server cxfServer = factory.create();
}

请注意,您可以在单个servlet中加载尽可能多的资源。另请注意,factory.setAddress()中的路径将附加到注册servlet的路径。

另请注意,我使用的是单例模式,而不是处理程序类模式。我确信这可以简单地修改以适应其他范例。