[Seasar-user:11983] Re: [S2Axis2]multipart/form のリクエストについて

元場 羊二郎(Youjiro Motoba) [E-MAIL ADDRESS DELETED]
2007年 12月 7日 (金) 19:01:53 JST


たかのり様

お世話になっております。元場です。

ご返信遅くなり申し訳ありません。

> [Seasar-user:11912] の関連だと思いますが、

ご推察の通りです。

> ただ、現在のMultipartFormDataBuilderにはバグがあるようで、
> リクエストをパースする際にClassCastExceptionが発生するようです。

上記の通りの現象が確認できました。

> そのようになる場合は、axis2.xmlで、
> MultipartFormDataBuilderを拡張した独自のクラスを指定する必要があります。

度々申し訳ありませんが、MultipartFormDataBuilder でバイナリ
データを扱うことはできるかご存知ないでしょうか?
独自のクラスを作ろうとしているのですが、バイナリデータの扱
いに困っています。
(バイナリデータと言うよりアップロードファイルの扱い?)

私のMultipartFormDataBuilder の拡張方法が悪いような気がする
のですが、
MultipartFormDataBuilder の getParameterMap でリクエストデ
ータを String[] に設定して扱っていることが ClassCastExcepti
on の原因のようだったので、String[] ⇒ String にすることで
ClassCastException の発生は防げました。
また、サービスの OMElement にも値は渡ってくるようになりまし
た。
ただ、その OMElement から DataHandler を取得してファイル出
力すると、アップロードしたファイルとサイズがことなるファイ
ルが出力されてしまい、バイナリエディタで中身を確認したとこ
ろ、全く別ものになってしまってました。。
(jpgファイルをアップロードしています。)
単純に String[] ⇒ String にしただけでは本件は解消されない
のでしょうか?

org.apache.axis2.builder.BuilderUtil も拡張する必要がある?
バイナリデータを扱える OMElement のImplクラスを作る必要があ
る?

もしご存知でしたらご教授頂けると大変助かります。

----- Original Message ----- 
送信者: Takanori Suzuki<[E-MAIL ADDRESS DELETED]>
宛先: [E-MAIL ADDRESS DELETED]
日付:Thursday, December, 06, 2007, 11:21 PM
件名: [Seasar-user:11958] Re:[S2Axis2]multipart/form のリクエストについて

> 
> 
> たかのりです。
> 
> 6 Dec 2007 13:14:59 +0900 に 元場 羊二郎(Youjiro
> Motoba)<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > お世話になっております。元場と申します。
> >
> > S2Axis2を使用してサービスを作成しているのですが、
> > enctype="multipart/form-data"
> > を指定したフォームデータが取得できないのですが、どなたかご
> > 存知ないでしょうか?
> 
> [Seasar-user:11912] の関連だと思いますが、
> 以下のクラスは呼ばれていますでしょうか?
> 
> org.apache.axis2.builder.MultipartFormDataBuilder
> 
> Axis2のデフォルトでは、
> enctype が multipart/form-data の場合は、
> 上記クラスが呼び出されます。
> 
> サービス内でリクエストを処理しているようですが、
> MultipartFormDataBuilderが呼び出されていれば、
> リクエストは受信できているはずです。
> 
> 
> ただ、現在のMultipartFormDataBuilderにはバグがあるようで、
> リクエストをパースする際にClassCastExceptionが発生するようです。
> 
> そのようになる場合は、axis2.xmlで、
> MultipartFormDataBuilderを拡張した独自のクラスを指定する必要があります。
> 
> axis2.xmlで、以下の部分で指定してください。
>  →axis2.xmlのパスは、web.xmlで指定
> 
>     <messageFormatters>
>         <messageFormatter contentType="application/x-www-form-urlencoded"
> 
> class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
>         <messageFormatter contentType="multipart/form-data"
>                          class="★独自のクラスを指定★"/>
>         <messageFormatter contentType="application/xml"
> 
> class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
>     </messageFormatters>
> 
> 
> 恐らく、サービスの引数にPOJOのクラスは指定できないと思われます。
> OMElementでご確認ください。
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 

//
motoba


Seasar-user メーリングリストの案内