web-services - 无法访问Web服务端点: Spring-WS 2

标签 web-services spring spring-mvc jaxb spring-ws

我是 Spring-WS 的新手,我已经根据 JAXB 带注释的类生成的模式定义了一个端点。但是,当我尝试通过soapUI 访问端点时,我收到以下错误以及 404 响应代码:

未找到 [SaajSoapMessage {clip}clipClaimRequest] 的端点映射

关于我做错了什么有什么想法吗?感谢您提供的任何帮助。

端点类:

@Endpoint
public class TestEndpoint {

    @PayloadRoot(localPart = "clipClaimRequest", namespace = "clip")
    @ResponsePayload
    public CLIPClaimResponse registerClaim(@RequestPayload CLIPClaimRequest request) {
        return new CLIPClaimResponse("Success", "test success");
    }
}

请求/响应类(通过 JAXB 编码/解码):

@XmlRootElement(name = "clipClaimRequest")
@XmlType(name = "CLIPClaimRequest")
public class CLIPClaimRequest {
    private Claim claim;

    @XmlElement(required = true)
    public Claim getClaim() {
        return claim;
    }

    public void setClaim(Claim claim) {
        this.claim = claim;
    }

}

还有:

@XmlRootElement(name = "clipClaimResponse")
@XmlType(name = "CLIPClaimResponse")
public class CLIPClaimResponse {
    private String code;
    private String description;

    public CLIPClaimResponse() {
    }

    public CLIPClaimResponse(String code, String desc) {
        setCode(code);
        setDescription(desc);
    }

    @XmlElement(required = true)
    public String getCode() {
        return code;
    }

    @XmlElement(required = true)
    public String getDescription() {
        return description;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

web.xml servlet 配置:

<servlet>
    <servlet-name>spring-ws</servlet-name>
    <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    <init-param>
        <description>This is used by SpringWS to dynamically convert WSDL urls</description>
        <param-name>transformWsdlLocations</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-ws</servlet-name>
    <url-pattern>/clipClaimService/*</url-pattern>
</servlet-mapping>

spring-ws-servlet.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans>
    <context:annotation-config />
    <sws:annotation-driven />
    <sws:dynamic-wsdl id="claimRegistration" portTypeName="CLIPClaimPort"
        locationUri="/clipClaimService/" targetNamespace="clip">
        <sws:xsd location="/WEB-INF/CLIP_Poc.xsd" />
    </sws:dynamic-wsdl>
    <bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <!-- list of classes... -->
            </list>
        </property>
        <property name="schema" value="/WEB-INF/CLIP_PoC.xsd" />
    </bean>

    <bean id="marshallingPayloadMethodProcessor"
        class="org.springframework.ws.server.endpoint.adapter.method.MarshallingPayloadMethodProcessor">
        <constructor-arg ref="jaxb2Marshaller" />
        <constructor-arg ref="jaxb2Marshaller" />
    </bean>

    <bean id="defaultMethodEndpointAdapter"
        class="org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter">
        <property name="methodArgumentResolvers">
            <list>
                <ref bean="marshallingPayloadMethodProcessor" />
            </list>
        </property>
        <property name="methodReturnValueHandlers">
            <list>
                <ref bean="marshallingPayloadMethodProcessor" />
            </list>
        </property>
    </bean>
</beans>

最后,CLIP_PoC.xsd,生成 WSDL 的模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="clip" targetNamespace="clip" version="1.0">
    <xs:element name="clipClaimRequest" type="CLIPClaimRequest"/>
    <xs:element name="clipClaimResponse" type="CLIPClaimResponse"/>
    <!-- type definitions for all the complex elements used... -->
</xs:schema>

最佳答案

我明白了。我忘记输入:<context:component-scan base-package="my.base.package"/>在我的spring-ws-servlet.xml文件。这以某种方式修复了它。

关于web-services - 无法访问Web服务端点: Spring-WS 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718257/

相关文章:

spring-mvc - Spring MVC 正在删除一个@PathVariable

java - Spring Security 在运行时注销用户

c# - 在 asp.net 中自动完成选择多个标签

java - 交易回滚和网络服务

java - 是否有用于将 spring 库添加到 Eclipse 中的项目的项目方面?

java - 将 Junit 与 spring 一起使用

java - JUnit-Test 类测试和项目测试之间存在差异

java - Apache Axis : How to set call properties using code generated from wsdl2java?

c# - 使用不同的界面使用 Web 服务

spring - Tomcat 8.0无法启动