2

バイナリデータをクライアントに返送できるようにしたいSpring-WSWebサービスがあります。私の意図は、添付ファイル付きのMTOMまたはSoapを使用するようにSOAP応答をフォーマットすることです。応答はJAXBオブジェクトになります。

私はすでにSpring-WS環境をセットアップしており、JAXBを使用してリクエストを送受信できます。ただし、ほとんどのチュートリアルとWeb上の情報は、添付ファイルを送信するクライアントに関連しているのに対し、サーバーが添付ファイルをクライアントに送信することに関心があるため、バイナリ添付ファイルの応答を設定するのに苦労しています。

2つの質問:

  • バイナリデータをクライアントに返すために推奨されるアプローチはどれですか?添付ファイル付きのSOAP、MTOM、または単にbase64encodedデータをxmlタグとして返すだけですか?

  • 2つの方法のいずれかを使用してバイナリ添付ファイルを返すようにSpring-WSを構成する方法を示す例はありますか?

4

1 に答える 1

2

1)Mtomは、soapを介してファイルを送信するためのデファクトスタンダードであるため、これをお勧めします。

2)(Mavenからではなく)spring-wsディストリビューションに付属するmtomの例を見ると、必要なセットアップの90%がわかります。1つの違いは、添付ファイルのexpectedContentTypeであり、application/octet-streamに設定する必要があります。

これで、サーバー上のコードは次のようになります。

try {
        dataHandler = new DataHandler(new File("/tmp/test.exe").toURL());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    return new JaxbObjectResponse("id", dataHandler);

スキーマ定義は次のようになります。

<xsd:element name="JaxbObjectResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="id" type="xsd:string" />
            <xsd:element name="file" type="xsd:base64Binary" xmime:expectedContentTypes="application/octet-stream" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>
于 2012-07-12T23:04:28.943 に答える