我正在尝试调用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请求的示例?非常感谢帮助。
答案 0 :(得分:2)
这实际上就像在我的classpath / pom中添加saxon一样简单。我认为spring-ws客户端中的saaj消息坚持使用saxon将mtom附件的源推送到生成的请求中。
我的代码实际上是有效的,但是我会把它留在这里,就像在网上搜索一样,我找不到任何关于如何从spring-ws客户端发送带有mtom附件的jaxb请求的好例子。可能会觉得这很有用。