1

我正在尝试调用 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);

我已将编组器设置为启用 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:未找到提供程序 net.sf.saxon.TransformerFactoryImpl

是否有人对我做错了什么有任何想法,或者任何人都可以向我展示如何使用来自 spring-ws 客户端的 mtom 附件编组 jaxb 请求的示例?帮助将不胜感激。

4

1 回答 1

2

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

我的代码实际上是有效的,但我会把它留在这里,因为在网上进行大量搜索时,我找不到任何关于如何从 spring-ws 客户端发送带有 mtom 附件的 jaxb 请求的好例子,所以其他人可能会找到这个有用。

于 2013-01-29T09:39:40.617 回答