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

これは実際には、クラスパス/pomにsaxonを追加するのと同じくらい簡単でした。spring-wsクライアントのsaajメッセージは、saxonを使用してmtom添付ファイルのソースを生成されたリクエストにプッシュすることを主張していると思います。

私のコードは実際には機能しますが、ネット上で多くの検索を行っているため、Spring-wsクライアントからmtomアタッチメントを使用してjaxbリクエストを送信する方法の良い例が見つからなかったため、他の人がこれを見つける可能性があるため、ここに残しておきます使える。

于 2013-01-29T09:39:40.617 に答える