1

MTOMストリーミングWebサービスを開発していますが、次の問題が発生しました。Webサービス実装クラスに次のコードがあります。

@Override
public void fileUpload(String name, DataHandler data) 
{
    System.out.println("INVOKING FILE UPLOAD!");

    try
    {
           StreamingDataHandler dh = (StreamingDataHandler) data;
           File file = File.createTempFile("result.txt", "");
           dh.moveTo(file);
           dh.close();
           System.out.println("TEMP FILE WITH DATA: " + file.getAbsolutePath());
    } 
    catch(Exception e) 
    {
           throw new WebServiceException(e);
    }

}

問題は、Eclipseが次の方法でStreamingDataHandlerをインポートするように要求することです(コンパイルおよびデプロイ-ok):

import com.sun.xml.internal.ws.developer.StreamingDataHandler;

ただし、実行時にClassNotFoundExceptionが発生します。簡単に機能させるために何をエクスポートする必要があるか教えてください。jaxws-ri.jarとstax-ex.jar(v 2.2.7)をモジュールに含めようとしましたが、運がありませんでした(他のエラーが発生しました)。また、StreamingDataHandlerクラスはそれらの異なるパッケージの下にあります(Eclipseによってプロンプトが表示されるのと同じですが、「内部」はありません)。私のプロジェクトファセットは次のとおりです。動的Web-モジュール3.0、Java 1.7、Javascript 1.0、JBoss Webサービスコア、サーバーランタイムはJBoss7.1.1です。どうすれば混乱を解決できますか?どうも。

更新:(解決策)

次のコードを使用してデータを書き込みます。

InputStream is = data.getInputStream(); // DataHandler
File file = File.createTempFile("result.txt", "");
OutputStream os = new FileOutputStream(file.getAbsolutePath());

byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = is.read(buffer)) != -1)
{
    os.write(buffer, 0, bytesRead);
}
os.flush();
os.close();

2つのホスト間で5.9Gbのデータを送信しました。

4

1 に答える 1