[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 メーリングリストの案内