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

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

  •  0
  • Gobliins  · 技术社区  · 11 年前

    是否可以通过“使用servlet传输”使用apachecxf(soap/rest)创建Web服务 没有Spring和web.xml 文件“?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    不,这是不可能的。
    服务将需要web部署描述符。

    您可以扩展

    CXFNonSpringJaxrsServlet 用于REST

    和

    CXFNonSpringServlet 用于SOAP

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

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

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

        2
  •  0
  •   Michael Jameson    11 年前

    这是可能的。我花了相当多的时间来为我自己的项目弄清楚这一点,并认为我会分享。

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

    扩展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中加载您认为需要的资源。还要注意工厂中的路径。setAddress()附加到注册servlet的路径。

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