gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:34:18 26 4
gpt4 key购买 nike

我是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com