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