- PR -

SOAPのAttachmentについて

1
投稿者投稿内容
まさき
会議室デビュー日: 2003/12/24
投稿数: 4
投稿日時: 2003-12-24 13:23
初の投稿となります。
今、.NETとjavaで簡単なWebサービスをつくっています。
クライアント側は.NETで、サーバのJAVA側では指定されたファイルをSOAPにAttachmentして返信、ということをやっていますが、うまくいきません。
ちなみにMIMEではなくDIMEを使っています。

-------------------JAVAのコード--------------------------
public boolean getData(String fileName) throws RemoteException {
try {
DataHandler dh =
new DataHandler(new FileDataSource("C:/Projects/img/" +fileName));
MessageFactory fac = MessageFactory.newInstance();
MessageContext context = MessageContext.getCurrentContext();
SOAPMessage message = fac.createMessage();
AttachmentPart part = message.createAttachmentPart(dh);
message.addAttachmentPart(part);
context.setMessage(message);

return true;
catch(Exception e) {
return false;
}
}
------------------------------------------------------------

一応trueは返るのですが、SOAPMessageにAttachmentされていないようです。
MIMEじゃなくDIMEを使用しているのが原因なのでしょうか?
Webサービスを始めたばかりで不明な部分もあるかもしれませんが、何かわかる方教えてください。
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-01-12 18:22
DIMEでは試していませんが、こんな感じでどうでしょう?

DataHandler dh =
new DataHandler(new FileDataSource("C:/Projects/img/" +fileName));
MessageContext context = MessageContext.getCurrentContext();
SOAPMessage message = context.getResponseMessage();
AttachmentPart part = message.createAttachmentPart(dh);
message.addAttachmentPart(part);
まさき
会議室デビュー日: 2003/12/24
投稿数: 4
投稿日時: 2004-01-13 16:58
返信ありがとうございます。

>SOAPMessage message = context.getResponseMessage();

実はこれもすでに試していたのですが、これだとmessageがnullで、Attachmentをadd
するときにエラーが出てしまいます。
そもそもresponseってどう返すんでしょうか?

調べていてメッセージハンドラとかいうとても便利そうなものを見つけましたが、
Axisを使っていないのでやっぱり駄目なのでしょうか・・・
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-01-14 02:04
DIMEに対応しているというので、Axisかと思っていました。
何を使われているのでしょうか?

Handlerを使ったAttachmentの実装は以下にサンプルがあります。
http://dev2dev.bea.com/code/websvcs.jsp

JAX-RPC, SAAJ準拠であれば、Handlerに対応しているはずですよ。
まさき
会議室デビュー日: 2003/12/24
投稿数: 4
投稿日時: 2004-01-15 20:28
サイトを教えていただいてありがとうございます。

あ、開発環境ですがWebsphereStudio を使っています。
すいません、こういう場合は開発環境を書くべきなんですよね。
なにぶんはじめてなもので・・・

Handlerを利用してSOAPメッセージにAttachmentをしてみました。
handleRequest(),handleResponse()それぞれでMessageに対して
Attachmentをしてみました。
----------------------- LogHandler.java -----------------------------
:
public boolean handleRequest(MessageContext context) {
 DataHandler dh =
  new DataHandler(new FileDataSource("C:/Projects/img/" +fileName));
 SOAPMessageContext soapContext = (SOAPMessageContext) context;
 SOAPMessage msg = soapContext.getMessage();
 AttachmentPart part = msg.createAttachmentPart(dh);
 msg.addAttachmentPart(part);

 return true;
}
:
------------------------------------------------------------------------
一応Attachmentできていて、サーバのほうでAttachmentされたファイルを
書き出すことはできました。
同様にしてhandleResponse()でAttachmentを行ったところ(ソースは同じ)
エラーになりました。デバッグするとtrueを返すところまではできているよう
で、その後にクライアントの処理に戻る途中で駄目になっているようです。

------------------ エラー内容 ------------------------------------
PivotHandlerWrapper - -WSWS3400I: 情報: 予期しない例外。 <java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream>java.lang.NoClassDefFoundError:
 :
-----------------------------------------------------------------

リクエストとレスポンスでは異なるのでしょうか?
何かわかる方いらしたら教えてください。
まさき
会議室デビュー日: 2003/12/24
投稿数: 4
投稿日時: 2004-01-19 17:01
応答SOAPメッセージにDIMEでAttachmentすることができました。

前記のHandlerで、AttachmentImplで送信タイプをDIMEに設定したら
うまくいきました。しかしここでMIMEに設定すると前と同じエラーが出
てきます。

一応はできましたが、このエラーは気になるので何かわかる方いらした
ら教えてください。
1

スキルアップ/キャリアアップ(JOB@IT)