从Spring Integration客户端调用Web Service时出现“无法找到此远程调用的匹配操作”错误。
Web服务有多个操作,例如process1,process2,process3等。
如何调用具有2个字段的操作process2。请给我打电话,以下实施中缺少什么。
Spring Integration配置文件:
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.model.Request</value>
</list>
</property>
</bean>
<int:gateway id="ws" service-interface="com.gateway.WsGateway"
default-request-channel="inputChannel" />
<int-ws:outbound-gateway request-channel="inputChannel"
marshaller="jaxbMarshaller"
uri="wsdl_url" />
WsGateway.java
public interface WsGateway {
@Gateway(requestChannel = "inputChannel")
public void callWS(Request request);
}
Request.java
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement(name = "process2")
public class Request {
@XmlElement(name = "name")
private String name;
@XmlElement(name = "dept")
private String dept;
}
Main.java
Request req = new Request();
req.setName("foo");
req.setDept("xyz");
gateway.callWS(req);
答案 0 :(得分:0)
我建议你将你的应用程序生成的XML与WS的WSDL所需的XML进行比较。
您可以通过SOAP UI和一些网络wireshark来实现。
我猜可能,但你需要一个XML的nakespace声明,它是一个SOAP消息体:
@XmlType(name = 'RequestType', namespace = 'THE_NAMESPACE_URL')
@XmlAccessorType(value = XmlAccessType.FIELD)
@XmlRootElement(name = "process2", namespace = 'THE_NAMESPACE_URL')
public class Request