[seasar-user:3296] Re: [Seasar-user:3290] [S2Axis] Attachmentの利用
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2006年 3月 1日 (水) 04:04:10 JST
小林 (koichik) です.
Date: Tue, 28 Feb 2006 09:54:06 +0900
From: Shouhei Shirai <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:3290] [S2Axis] Attachmentの利用
> 現在S2Axisを利用する中で添付ファイルのやり取りを検討しているのですが、
> S2AxisでのAttachmentの使用方法がわからず困っています。
今のところ,S2Axis としてはアタッチメントを特別にサポート
しているわけではないので,Axis で普通にアタッチメントを
使う場合と同じになります.
特にクライアント側については,S2Remoting のインターセプタを
使った方法ではアタッチメントを扱えないので,Axis のサンプルと
同じように Call を直接使うことになります.
> sampleのEchoAttachmentsServiceで試してみようと思い、
> wsddファイルををS2Axisにてdeployしてみたのですが、
> クライアント側で例外が発生してしまいます。
この部分,もう少し詳しく説明をお願いします.
デシリアライズで失敗しているということは,リクエストは
サーバに届いているのでしょうか?
サーバ側のログ (標準出力) に
In echo
Received "javax.activation.DataHandler".
といったメッセージは出力されていますか?
また,クライアントの EchoAttachment を起動する際に
引数で -d を指定すると詳細なログメッセージが出力されるので,
どのあたりまで動いているのか確認してください.
一応,こちらでも動かしてみました.
まず,Axis 1.3 の samples/attachments/attachdeploy.wsdd を
S2Axis で deploy します (サーバ側).
以下のような dicon を app.dicon でインクルードします.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<meta name="axis-deploy">"samples/attachmentsattachdeploy.wsdd"</meta>
</components>
クライアントは Axis のサンプル EchoAttachment をそのまま使います.
その EchoAttachment.java ですが,453 行目が
String endPointURLString = "http://localhost:" +opts.getPort() + "/axis/services/urn:EchoAttachmentsService";
となっていて,コマンドライン引数で URL を指定しても無駄なので
String endPointURLString = "http://localhost:" +opts.getPort() + "/s2axis-examples/services/urn:EchoAttachmentsService";
に修正します.
そしてコマンドライン引数に
-d -l http://localhost:8080/s2axis-examples/services/urn:EchoAttachmentsService foo.txt
を指定して実行したところ,最後に
Going to compare the files..
Attachment sent and received ok!
が表示され,きれいに実行されました.
次に,EchoAttachmentsService を S2 で管理するように dicon を
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components>
<component name="urn:EchoAttachmentsService" class="samples.attachments.EchoAttachmentsService">
<meta name="axis-service">"samples/attachments/attachdeploy.wsdd"</meta>
</component>
</components>
としてみたところ,やはりきれいに実行できました.
アタッチメントも退屈なコードを書くことになりがちっぽいので,
S2Axis で楽になるようにしたいところなのですが,どうすれば
使いやすいものができるかイメージできていないのでそのまま放置に
なっています.
以前,ホンマさん (だったよね?) からリクエスト頂いた際にも
そんな話をしたのですが...
いい案があればお願いします.
# Tiger 前提なら引数にアノテーションとか?
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内