Spring 集成 Web 服务客户端无法正常工作



从 Spring 集成客户端调用 Web 服务时出现"找不到此远程调用的匹配操作"错误。

Web 服务有多个操作,例如进程 1、进程 2、进程 3 等。

如何调用具有 2 个字段的操作进程 2。请打电话给我,下面的实现中缺少什么。

Spring 集成配置文件:

    <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);

我建议你将应用程序生成的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

最新更新