皆さん

こんにちは。はじめまして、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]

メールによる返信