To: Tiffanyさん
木村です。
関連しそうとご報告のあったAXIS-1569とは無関係の様です。
本件は、Bean実装であるSample01Rep.javaのソースに問題がある
ようです。次の様に修正して実行してしてみて下さい。変更内容は
getterメソッドgetName()を追加したのみです。
このファイルをコンパイル後にAPサーバにコピーし、サーバを
再起動すれば、正常に配列データが取得できるようになるはずです。
もし、不具合が解決しないようであれば、また連絡ください。
.........*.........*.........*.........*.........*.........*.........*
package mysamples;
import java.io.Serializable;
public class Sample01Rep implements Serializable{
public String[] name = {"name1", "name2", "name3", "name4" , "name5"};
public Sample01Rep(){
}
public String [] getName() {
return name;
}
}
.........*.........*.........*.........*.........*.........*.........*
よろしくお願いします。
---
Toshi <[EMAIL PROTECTED]>
On Fri, 13 May 2005 [EMAIL PROTECTED] wrote:
皆さん
こんにちは。はじめまして、Tiffanyです。
AxisRC3から使い始めて、今週Axis1.2Finalにバージョンアップしました。
英語版のバグリスト等で数回似たような問題が取り上げられていますが、
いまだ仕様なのかバグなのかが分からないため、メーリングリストに
投稿させていただきました。
下記と似たような問題だと思います。
http://issues.apache.org/jira/browse/AXIS-1569
私のプログラムは、
サーバー側のあるクラスの中に配列を持たせて、
クライアントに配列の値を表示する、ごくシンプルなものです。
配列には5つ値をいれているにも関わらず、クライアント側には
最後の1つの値しか返りません。
なお、上記リンクを参考にしてsetter/getterをつけたところ、RC3では動いたものの、
1.2FinalではSAXParseExceptionが発生しました。(これはまた別件になります。。。)
どなたか同じような問題に遭遇した方はいらっしゃいますでしょうか?
下記にソースコードを添付しますので、ご確認、ご意見をいただければと思います。
よろしくお願いいたします。
■サーバーサイド(Tomcat)
mysamplesのパッケージにSample01.javaとSample01Rep.javaの
2つのクラスを作りました。
*******Sample01.java*******
package mysamples;
import java.io.Serializable;
public class Sample01 implements Serializable{
public Sample01Rep returnArray(){
return new Sample01Rep();
}
}
*******Sample01.java*******
package mysamples;
import java.io.Serializable;
public class Sample01Rep implements Serializable{
public String[] name = {"name1", "name2", "name3", "name4" , "name5"};
public Sample01Rep(){
}
}
■クライアントサイド(Java)
*******Sample01Client.java*******
import mysamples.Sample01;
import mysamples.Sample01Rep;
import mysamples.Sample01Service;
import mysamples.Sample01ServiceLocator;
public class Sample01Client{
public static void main(String[] args) throws Exception{
System.out.println("<< Sample01 Client >>");
//Make a Service
Sample01Service service = new Sample01ServiceLocator();
//Now use the service to get a stub
Sample01 stub = service.getsample01();
//Make the actual call
Sample01Rep rep = stub.returnArray();
System.out.println("length --> " + rep.getName().length);
for(int i=0; i<rep.getName().length; i++){
System.out.println("[" + rep.getName()[i] + "]");
}
System.out.println("<< END >>");
}
}
■結果
<< Sample01 Client >>
length --> 1
[name5]
<< END >>
なお、想定される結果は下記に示している感じです。
<< Sample01 Client >>
length --> 5
[name1]
[name2]
[name3]
[name4]
[name5]
<< END >>
■その他
○JAVA2WSDL (host:portは省かせていただきました。)
java org.apache.axis.wsdl.Java2WSDL -o Sample01.wsdl -lhttp://host:port/axis/services/sample01 -n sample01 mysamples.Sample01
○WSDL2JAVA
java org.apache.axis.wsdl.WSDL2Java Sample01.wsdl -s -o ClientSample -p mysamples
○WSDD
生成されたdeploy.wsddファイル内のクラス名部分を下記のように変更しました。
(変更前) <parameter name="className" value="mysamples.Sample01SoapBindingImpl"/>
(変更後) <parameter name="className" value="mysamples.Sample01"/>
○デプロイ(host:portは省かせていただきました。)
java org.apache.axis.client.AdminClient -lhttp://host:port/axis/servlet/AxisServlet deploy.wsdd
以上です。
-----
Tiffany Chan
---------------------------------------------------------------------
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]