Spring-ws客户端mtom

时间:2013-01-29 09:22:30

标签: java spring jaxb spring-ws mtom

我正在尝试调用Web服务并使用mtom为我的请求添加附件。在我正在呼叫的Web服务上启用了Mtom,我可以使用soapui调用该服务。

请求的架构如下所示;

<element name="MyRequest">
    <complexType>
        <sequence>
            ...
            <element name="content" type="base64Binary"
                xmime:expectedContentTypes="text/xml" />
        </sequence>
    </complexType>
</element>

在我的java代码中,我然后创建jaxb请求对象并尝试从字符串设置内容;

MyRequest request = factory.createMyRequest();

StreamSource ss = new StreamSource(new StringReader("some content..."));

request.setContent(ss);

WebServiceTemplate wst = ...;

wst.marshalSendAndReceive(request);

我已设置我的marshaller以启用mtom(虽然我不确定客户端是否有必要);

<bean id="my-marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="contextPath" value="..."/>
    <property name="mtomEnabled" value="true"/>
</bean>

但我得到以下异常;

javax.xml.transform.TransformerFactoryConfigurationError: Provider net.sf.saxon.TransformerFactoryImpl not found

有没有人对我做错了什么有任何想法,或者任何人都可以向我展示如何使用spring-ws客户端的mtom附件编组jaxb请求的示例?非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

这实际上就像在我的classpath / pom中添加saxon一样简单。我认为spring-ws客户端中的saaj消息坚持使用saxon将mtom附件的源推送到生成的请求中。

我的代码实际上是有效的,但是我会把它留在这里,就像在网上搜索一样,我找不到任何关于如何从spring-ws客户端发送带有mtom附件的jaxb请求的好例子。可能会觉得这很有用。