- PR -

Apache axisについて

1
投稿者投稿内容
k5
会議室デビュー日: 2004/04/27
投稿数: 10
投稿日時: 2004-06-02 17:28
始めまして。
Webサービス初心者ですが、Apache Axisを使ってWebサービスのテストを行っています。
そこで質問があります。

-----Server:Java-----
public class A {
int a;
public int seta( int val ) {
a=val;
return a;
}
public String getMessage() {
return a + "Hello World";
}
}
-----Client:vbs-----
set sc = WScript.CreateObject("MSSOAP.SoapClient")
sc.mssoapinit("http://...../A.jws?wsdl")

result = sc.seta(100)
WScript.Echo(result)

result = sc.getMessage()
WScript.Echo(result)

のコードを作成してみたのですが、
>100
>0Hello World

となりました。
なぜ、”100Hello World”とならないのでしょうか?

初心者の質問で、くだらないかもしれませんが、
何方かご教示お願いします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-06-02 18:28
引用:

k5さんの書き込み (2004-06-02 17:28) より:
なぜ、”100Hello World”とならないのでしょうか?


引用:

result = sc.seta(100)


と、

引用:

result = sc.getMessage()


で呼び出されるサーバクラスのインスタンスが異なるからです。おそらくリクエスト単位で
サーバインスタンスを生成する設定になっていると思いますが、そうでなくてもWebサービス
はステートレスなコンポーネントですから、同一のインスタンスが呼び出されることを前提に
した使い方はできません。
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-06-04 00:50
WSDDのscopeをSessionに設定して下さい。

<parameter name="scope" value="Session"/>

これで、望んだ結果になると思います。

HTTPで通信しているので、Webアプリケーションと同じく
Cookieを使ってセッション管理しています。
1

スキルアップ/キャリアアップ(JOB@IT)