java - Spring CXF Webservice 未正确部署

标签 java spring web-services wsdl cxf

情况是这样的:我们有一个 Spring-MVC 应用程序,它现在应该提供契约优先的 SOAP 网络服务。在查看了一个 CXF 示例 (wsdl_first) 之后,我终于做到了这一点:

我生成了骨架类并实现了服务接口(interface)。

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

我创建了第二个 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/main/resources/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/main/resources/server-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

我错过了什么,可能是什么问题?

提前致谢。

最佳答案

server-applicationContext.xml 中的/services/IdmAdapterService 是相对于CXFServlet 的servlet 映射的/服务/*。所以你的服务的实际路径应该是:

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

关于java - Spring CXF Webservice 未正确部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079103/

相关文章:

java - 在充当服务器的 servlet 内进行套接字编程,启动某种服务器推送环境是一个好的解决方案吗?

java - Gif 图像描述符索引

java.lang.IllegalArgumentException : Could not resolve property name hourtoreserve from Property set for bean com. ti.project.vaadin.vaadinprojectti.Day

java - 实现 Bcrypt PasswordEncoder 后无法使用身份验证

c# - C# Web 服务中 "ConformsTo = WsiProfiles.None"的负面影响

java - 在 C++ 中使同步调用异步

java - Spring 安全 : Allow admin to do everything

asp.net - 使用 jQuery Ajax 将参数传递给 WebMethod

android 如何发送 int 和 double 作为 namevaluepair 作为 http post

java - DropWizard 和 Camel 集成