关于Spring和Apache CXF集成

时间:2011-09-26 11:41:16

标签: web-services spring cxf

在applicationcontext.xml文件中,我们有这样的

  <bean id="vincent" class="com.bayer.vincent.service.vincent"/>

  <jaxws:endpoint
      id="vincentSOAP"
      implementor="#vincent"
      implementorClass="com.bayer.vincent.service.vincent"
      address="/vincent/soap"
      bindingUri="http://schemas.xmlsoap.org/wsdl/soap/" />

这意味着什么意思?

我的问题是如何调用vincent类?

2 个答案:

答案 0 :(得分:0)

据我所知,创建了一个代理类,可以将所有调用转发给您的真实类。

另请参阅Configuring an Endpoint,其中描述了所有jaxws:endpoint属性。

答案 1 :(得分:0)

CXF提供了custom spring namespace来帮助您在此处轻松配置Web服务端点。

如果实现者以#开头,则CXF会假设endpoint is a Spring Bean,就像你的情况一样。

端点必须是普通的JAX-WS端点,即使用@Webservice注释进行注释,例如:

@WebService(serviceName="MemberService", endpointInterface="org.bk.memberservice.endpoint.MemberEndpoint", targetNamespace="http://bk.org/memberservice/")

现在,对您的uri- / vincent / soap的任何调用都将被CXF前端控制器重定向(您可以在web.xml文件中注册):

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

维护有效负载uri的内部注册表到处理程序(在本例中为Spring bean)并适当地调度请求。