Spring Integration Web Service客户端无法正常工作

时间:2014-02-13 12:53:26

标签: web-services webservice-client spring-integration

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

1 个答案:

答案 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