Re: desreializer
木村です。 上手くいったようで何よりです。 シリアライザは、APIを使ってもWSDDを使ってもどちらでも 正しく設定していれば問題なく無く動作します。藤本さんの 場合は、WSDDのtypeMappingの指定が誤っていたのですが、 APIを使ったシリアライザの登録も重複して実施しているため たまたま動作しているような状況だと推測します。 やはり正しくWSDDを記載し、AdminClientを使ったデプロイ を行うことをお勧めします。(server-config.wsddの直接編集 は、さまざまな問題を引き起こす可能性があるため、なれる までできるだけ避けたほうが良いと思います。) --- Toshi <[EMAIL PROTECTED]> On Fri, 22 Jul 2005, FUJIMOTO Jun wrote: 今原因がわかりました. スタブでのシリアライザ登録のとき間違って別の オブジェクトを指定していたものです. わからないことだらけなのでWSDDの書き方が間違っているのかと 思い(ちょっとデプロイがまともに動いてないこともあって) ご迷惑をおかけしました. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
今原因がわかりました. スタブでのシリアライザ登録のとき間違って別の オブジェクトを指定していたものです. わからないことだらけなのでWSDDの書き方が間違っているのかと 思い(ちょっとデプロイがまともに動いてないこともあって) ご迷惑をおかけしました. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
前のメールの内容は間違いでした スタブでシリアライザを登録していなかったため 出たものです やはり 致命的: 例外発生: / [en]-(Exception:) java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) となります. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
> そこで対処方法ですが、WSDDのlanguageSpecificTypeの指定を > > languageSpecificType="java:hoge.Bar" > languageSpecificType="java:hoge.Baz" > > といった形に修正して結果を報告お願いできますでしょうか? > ポイント1は「java:」が追加されていることで、ポイント2は > クラス「Bar」および「Baz」をパッケージ名を含む名称として > 記載している点です。上記例では、hogeパッケージということ > になります。 のようにしてみましたが Exception in thread "main" java.lang.AssertionError: Error : java.io.IOException: レジストリ [EMAIL PROTECTED] クラスfoo.Processのシリアライザが見つかりませんでした / [en]-(No serializer found for class foo.Process in registry [EMAIL PROTECTED]) at foo.Service.exec(Unknown Source) となりBeanのプロパティであるBeanがシリアライズできないみたいです. Barは package foo; public class Bar { private Baz _baz; public Baz getBaz(){return _baz;} public void setBaz(final Baz baz){_baz = baz;} } Bazは package foo; public class Baz { private String _uri; public String getUri(){return _uri;} public void setUri(final String uri){_uri = uri;} } のようになっています - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
木村です。 「直接server_config.wsddに書き込んでいます」ということで 現象自体は納得しました...。^^; そこで対処方法ですが、WSDDのlanguageSpecificTypeの指定を languageSpecificType="java:hoge.Bar" languageSpecificType="java:hoge.Baz" といった形に修正して結果を報告お願いできますでしょうか? ポイント1は「java:」が追加されていることで、ポイント2は クラス「Bar」および「Baz」をパッケージ名を含む名称として 記載している点です。上記例では、hogeパッケージということ になります。 --- Toshi <[EMAIL PROTECTED]> On Thu, 21 Jul 2005, FUJIMOTO Jun wrote: 木村です。 IllegalArgumentExceptionですから、プログラムが想定する クラス型以外のインスタンスが引数として渡されているという ことを示しています。 ただ、少し不思議なところもあります。WSDDのbeanMapping 定義で、「languageSpecificType="Bar"」および 「languageSpecificType="Baz"」 といった指定がなされていますが、これで問題なくデプロイ できているでしょうか?Exceptionが発生してしまってうまく デプロイできないような気がするのですが...。 どのバージョンのAxisを使われているでしょうか? また、クラスBarおよびBazは、パッケージに属さないクラス ということでしょうか? Axisのバージョンは1.2.1です. Bar,Bazは本当はパッケージに属しますがメールに転記 するとき名前を変え,パッケージを取ったのです. デプロイできるかどうかわからないのですが (デプロイがどうもうまくいかないのでデプロイせずに直接 server_config.wsddに書き込んでいます) Tomcatからサービスのwsddを要求してもエラーが出ずに 表示されます. Barのスタブは作らなくても良いはずと思うのですが 間違っているのでしょうか,あるいはWSDDの書き方が 誤っているのでしょうか - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
> 木村です。 > > IllegalArgumentExceptionですから、プログラムが想定する > クラス型以外のインスタンスが引数として渡されているという > ことを示しています。 > > ただ、少し不思議なところもあります。WSDDのbeanMapping > 定義で、「languageSpecificType="Bar"」および > 「languageSpecificType="Baz"」 > といった指定がなされていますが、これで問題なくデプロイ > できているでしょうか?Exceptionが発生してしまってうまく > デプロイできないような気がするのですが...。 > > どのバージョンのAxisを使われているでしょうか? > また、クラスBarおよびBazは、パッケージに属さないクラス > ということでしょうか? Axisのバージョンは1.2.1です. Bar,Bazは本当はパッケージに属しますがメールに転記 するとき名前を変え,パッケージを取ったのです. デプロイできるかどうかわからないのですが (デプロイがどうもうまくいかないのでデプロイせずに直接 server_config.wsddに書き込んでいます) Tomcatからサービスのwsddを要求してもエラーが出ずに 表示されます. Barのスタブは作らなくても良いはずと思うのですが 間違っているのでしょうか,あるいはWSDDの書き方が 誤っているのでしょうか - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
To: 藤本さん 木村です。 IllegalArgumentExceptionですから、プログラムが想定する クラス型以外のインスタンスが引数として渡されているという ことを示しています。 ただ、少し不思議なところもあります。WSDDのbeanMapping 定義で、「languageSpecificType="Bar"」および 「languageSpecificType="Baz"」 といった指定がなされていますが、これで問題なくデプロイ できているでしょうか?Exceptionが発生してしまってうまく デプロイできないような気がするのですが...。 どのバージョンのAxisを使われているでしょうか? また、クラスBarおよびBazは、パッケージに属さないクラス ということでしょうか? --- Toshi <[EMAIL PROTECTED]> On Thu, 21 Jul 2005, FUJIMOTO Jun wrote: Toshiyuki Kimura wrote: To: 藤本さん はじめまして。木村です。 残念ながら、この問いに対する答えは『無理です』ということに なってしまいます...。 もし、クラスFooがJavaBeanであれば、BeanSerializerを利用する ことが可能ですが、想定されている条件はそのようなケースではない たいめです。ご本人独自でシリアライザ・デシリアライザを実装して カスタムシリアライゼーションを行う必要があると思います。 具体的にどのような利用方法を検討されているのかは不明ですが 「org.apache.axis.encoding.ser.ArraySerializer.java」の実装 などが、(もしかしたら)参考になるのではないかと思います。 初めまして 藤本と申します AXISの勉強をしていて,シリアライザとデシリアライザを自分で 定義してみようと思いましたが以下のような場合についての 簡単なサンプルを提示していただけませんか 1.クラスBarとクラスBazにはシリアライザとデシリアライザが 定義されている. 2.クラスFooはFoo(Bar bar, Baz baz)というpublicなコンストラクタ を持つがインスタンスフィールドにはBarとBazを持たない. 3.Fooはデフォルトコンストラクタを持たない. このような場合FooのデシリアライザをBarとBazのデシリアライザ を利用して定義するには? どうもありがとうございます. 私はまだAXISについてほとんどわかっていないばかりでなく, MLの利用法もわからず,やっと私のメールがML内で有効になっていること が今し方わかりました(sendに対してフィルターをかけていたので一つも捕まらず 今までずいぶん寂しいMLだと思いこんでいました.) デシリアライズの実装についてMapSerializer等のソースを眺めて見たのですが わからないので取りあえずもっと簡単なところから始めようとして,まずBeanの プロパティ がBeanである場合について自分なりに(シリアライザは実装せずに BeanSerializerを使って) スタブ等つくってみましたが,以下の例外となります 致命的: 例外発生: / [en]-(Exception:) java.lang.IllegalArgumentException: object is not an instance of declaring class Beanのプロパティが基本的な型のときはうまくいったのですが何が悪いのでしょうか スタブは import java.net.MalformedURLException; import java.rmi.RemoteException; import org.apache.axis.AxisFault; import org.apache.axis.client.Call; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import static org.apache.axis.encoding.XMLType.*; public class Service { private static final String _SERVICE_NAME = "FooService"; private static final String _ENDPOINT = "http://localhost:8080/axis/services/"; + _SERVICE_NAME; private static final QName _BAR_QNAME = new QName( "urn:FooService", "Bar" ); private static final QName _BAZ_QNAME = new QName( "urn:FooService", "Baz" ); private Call _call; public Service() { try { _call = new Call(_ENDPOINT); _call.registerTypeMapping(Bar.class, _BAR_QNAME, new org.apache.axis.encoding.ser .BeanSerializerFactory (Bar.class, _BAR_QNAME), new org.apache.axis.encoding.ser .BeanDeserializerFactory (Bar.class, _BAR_QNAME)); _call.registerTypeMapping(Baz.class, _BAZ_QNAME, new org.apache.axis.encoding.ser .BeanSerializerFactory (Baz.class, _BAZ_QNAME), new org.apache.axis.encoding.ser .BeanDeserializerFactory (Baz.class, _BAZ_QNAME)); } catch(MalformedURLException e) { assert false : "Error:" + e.toString(); } } public void exec(final Bar bar) { try { _call.removeAllParameters(); _call.setOperationName( new QName(_SERVICE_NAME, "exec") ); _call.addParameter("arg1", _BAR_QNAME, ParameterMode.IN ); _call.setReturnType(AXIS_VOID); _call.invoke( new Object[]{project, } ); } catch (AxisFault fault) { assert false : "Error : " + fault.toString(); } catch (RemoteException fault) { assert false : "Error : " + fault.toString(); } } } WSDDは でBazはBarのプロパティです(getBaz,setBazがある). - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
先ほどのにミスがありました >_call.invoke( new Object[]{project, } ); > > とあるのは _call.invoke(new Object[]{bar, }); の間違いでした.エラーになるのはこれが原因ではありません. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
Toshiyuki Kimura wrote: > To: 藤本さん > > はじめまして。木村です。 > > 残念ながら、この問いに対する答えは『無理です』ということに > なってしまいます...。 > > もし、クラスFooがJavaBeanであれば、BeanSerializerを利用する > ことが可能ですが、想定されている条件はそのようなケースではない > たいめです。ご本人独自でシリアライザ・デシリアライザを実装して > カスタムシリアライゼーションを行う必要があると思います。 > > 具体的にどのような利用方法を検討されているのかは不明ですが > 「org.apache.axis.encoding.ser.ArraySerializer.java」の実装 > などが、(もしかしたら)参考になるのではないかと思います。 > >> 初めまして 藤本と申します >> >> AXISの勉強をしていて,シリアライザとデシリアライザを自分で >> 定義してみようと思いましたが以下のような場合についての >> 簡単なサンプルを提示していただけませんか >> >> 1.クラスBarとクラスBazにはシリアライザとデシリアライザが >> 定義されている. >> 2.クラスFooはFoo(Bar bar, Baz baz)というpublicなコンストラクタ >> を持つがインスタンスフィールドにはBarとBazを持たない. >> 3.Fooはデフォルトコンストラクタを持たない. >> >> このような場合FooのデシリアライザをBarとBazのデシリアライザ >> を利用して定義するには? > どうもありがとうございます. 私はまだAXISについてほとんどわかっていないばかりでなく, MLの利用法もわからず,やっと私のメールがML内で有効になっていること が今し方わかりました(sendに対してフィルターをかけていたので一つも捕まらず 今までずいぶん寂しいMLだと思いこんでいました.) デシリアライズの実装についてMapSerializer等のソースを眺めて見たのですが わからないので取りあえずもっと簡単なところから始めようとして,まずBeanの プロパティ がBeanである場合について自分なりに(シリアライザは実装せずに BeanSerializerを使って) スタブ等つくってみましたが,以下の例外となります 致命的: 例外発生: / [en]-(Exception:) java.lang.IllegalArgumentException: object is not an instance of declaring class Beanのプロパティが基本的な型のときはうまくいったのですが何が悪いのでしょうか スタブは import java.net.MalformedURLException; import java.rmi.RemoteException; import org.apache.axis.AxisFault; import org.apache.axis.client.Call; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import static org.apache.axis.encoding.XMLType.*; public class Service { private static final String _SERVICE_NAME = "FooService"; private static final String _ENDPOINT = "http://localhost:8080/axis/services/"; + _SERVICE_NAME; private static final QName _BAR_QNAME = new QName( "urn:FooService", "Bar" ); private static final QName _BAZ_QNAME = new QName( "urn:FooService", "Baz" ); private Call _call; public Service() { try { _call = new Call(_ENDPOINT); _call.registerTypeMapping(Bar.class, _BAR_QNAME, new org.apache.axis.encoding.ser .BeanSerializerFactory (Bar.class, _BAR_QNAME), new org.apache.axis.encoding.ser .BeanDeserializerFactory (Bar.class, _BAR_QNAME)); _call.registerTypeMapping(Baz.class, _BAZ_QNAME, new org.apache.axis.encoding.ser .BeanSerializerFactory (Baz.class, _BAZ_QNAME), new org.apache.axis.encoding.ser .BeanDeserializerFactory (Baz.class, _BAZ_QNAME)); } catch(MalformedURLException e) { assert false : "Error:" + e.toString(); } } public void exec(final Bar bar) { try { _call.removeAllParameters(); _call.setOperationName( new QName(_SERVICE_NAME, "exec") ); _call.addParameter("arg1", _BAR_QNAME, ParameterMode.IN ); _call.setReturnType(AXIS_VOID); _call.invoke( new Object[]{project, } ); } catch (AxisFault fault) { assert false : "Error : " + fault.toString(); } catch (RemoteException fault) { assert false : "Error : " + fault.toString(); } } } WSDDは でBazはBarのプロパティです(getBaz,setBazがある). - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: desreializer
To: 藤本さん はじめまして。木村です。 # 前メールの文字コードがUTF-8となっており、環境によっては #文字化けを起こしていた可能性があるため、再送しておきます。 このような場合FooのデシリアライザをBarとBazのデシリアライザ を利用して定義するには? 残念ながら、この問いに対する答えは『無理です』ということに なってしまいます...。 もし、クラスFooがJavaBeanであれば、BeanSerializerを利用する ことが可能ですが、想定されている条件はそのようなケースではない たいめです。ご本人独自でシリアライザ・デシリアライザを実装して カスタムシリアライゼーションを行う必要があると思います。 具体的にどのような利用方法を検討されているのかは不明ですが 「org.apache.axis.encoding.ser.ArraySerializer.java」の実装 などが、(もしかしたら)参考になるのではないかと思います。 よろしくお願いします。 -- Toshi <[EMAIL PROTECTED]> On Wed, 13 Jul 2005, FUJIMOTO Jun wrote: 初めまして 藤本と申します AXISの勉強をしていて,シリアライザとデシリアライザを自分で 定義してみようと思いましたが以下のような場合についての 簡単なサンプルを提示していただけませんか 1.クラスBarとクラスBazにはシリアライザとデシリアライザが 定義されている. 2.クラスFooはFoo(Bar bar, Baz baz)というpublicなコンストラクタ を持つがインスタンスフィールドにはBarとBazを持たない. 3.Fooはデフォルトコンストラクタを持たない. このような場合FooのデシリアライザをBarとBazのデシリアライザ を利用して定義するには? - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]