2014-01-12 19 views
2

这就是情况:我们有一个Spring-MVC应用程序,现在应该提供一个契约优先的SOAP web服务。看了一个CXF示例(wsdl_first)后,我终于设法实现了这个目标:Spring CXF Webservice没有得到正确部署

我生成了框架类并实现了服务接口。

的Tomcat 7似乎部署了一句:

12 Jan 2014 19:32:08,386 INFO org.apache.cxf.service.factory.ReflectionServiceFactoryBean:411 - Creating Service {urn:webservice.x.com:wsdl}IdmAdapterService from WSDL: classpath:IdmAdapterService.wsdl 

我创建的应处置web服务呼叫的第二个servlet。 WEB-INF/web.xml文件包含:

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

<servlet-mapping> 
    <servlet-name>webservices</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

WEB-INF/CXF-servlet.xml中包含:

<jaxws:endpoint xmlns:tns="urn:webservice.x.com:wsdl" 
    id="idmAdapterImpl" address="/services/IdmAdapterService" 
    serviceName="tns:IdmAdapterService" endpointName="tns:IdmAdapterSoapPort" 
    implementor="de.y.idm.IdmAdapterImpl" 
    /> 

的src /主/资源/ cxf.xml包含:

<jaxws:endpoint name="{urn:webservice.x.com:wsdl}:IdmAdapterSoapPort" 
    wsdlLocation="IdmAdapterService.wsdl"> 
    <jaxws:properties> 
     <entry key="schema-validation-enabled" value="true" /> 
    </jaxws:properties> 
</jaxws:endpoint> 

的src /主/资源/服务器的applicationContext.xml包含:

<!-- HTTP Endpoint --> 
<jaxws:endpoint xmlns:tns="urn:webservice.x.com:wsdl" 
    id="idmAdapterImpl" 
      address="/services/IdmAdapterService" 
    serviceName="tns:IdmAdapterService" 
      endpointName="tns:IdmAdapterSoapPort" 
    implementor="de.y.idm.IdmAdapterImpl"> 
    <jaxws:features> 
     <bean class="org.apache.cxf.feature.LoggingFeature" /> 
    </jaxws:features> 
</jaxws:endpoint> 

当我打电话URL

http://localhost:8080/application/services/IdmAdaptorService?wsdl 

我总是最后

No service was found. 

和控制台

12 Jan 2014 19:51:53,731 DEBUG org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter:136 - Opening JPA EntityManager in OpenEntityManagerInViewFilter 
12 Jan 2014 19:51:53,732 DEBUG org.springframework.security.util.FilterChainProxy:205 - Converted URL to lowercase, from: '/services/idmadapterservice'; to: '/services/idmadapterservice' 
12 Jan 2014 19:51:53,732 DEBUG org.springframework.security.util.FilterChainProxy:212 - Candidate is: '/services/idmadapterservice'; pattern is /services/**; matched=true 
12 Jan 2014 19:51:53,733 DEBUG org.springframework.security.util.FilterChainProxy:165 - has an empty filter list 
12 Jan 2014 19:51:53,733 WARN org.apache.cxf.transport.servlet.ServletController:175 - Can't find the the request for http://localhost:8080/application/services/IdmAdapterService's Observer 
12 Jan 2014 19:51:53,734 DEBUG org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter:154 - Closing JPA EntityManager in OpenEntityManagerInViewFilter 
12 Jan 2014 19:51:53,734 DEBUG org.springframework.orm.jpa.EntityManagerFactoryUtils:338 - Closing JPA EntityManager 

我缺少的,可能是什么问题?

在此先感谢。

回答

7

/services/IdmAdapterService in server-applicationContext.xml是相对于CXFServlet的小服务程序映射,它是/services/*。因此,服务的实际路径应该是:

http://localhost:8080/application/services/services/IdmAdapterService

+1

您的评论引我到正确的方向。该服务部署在您发布的网址下。我将所有的'/ services/IdmAdapterService'改为'/ IdmAdapterService',我重读了它。谢谢。 – actc