- PR -

axisでリモートのオブジェクトのメンバ関数を呼ぶとエラー

投稿者投稿内容
こまったちゃん
会議室デビュー日: 2003/11/30
投稿数: 9
投稿日時: 2003-11-30 21:41
解らないなりに@ITの記事を読んでaxisを勉強している最中です。
記事のサンプルプログラムは正しく動くのですが、そのプログラムとほとんど同じようなサーバー、クライアント共簡素なプログラムをWSDLを使い作った物を動かすとオブジェクトの作成までは例外が出ずメンバ関数を呼ぶところになるとエラーになります。何が原因なのかさっぱりです。
どなたか教えていただける方は居ないでしょうか。
サーバー     RedHat9.0 java-1.4.1 axis-1.1
クライアント   win2000pro java-1.4.1 axis-1.1

エラー
java.lang.IllegalAccessException: Class org.apache.axis.providers.java.JavaProvider can not access a member of class turip.FishDbBean with modifiers ""
Emacs信者
常連さん
会議室デビュー日: 2003/08/10
投稿数: 38
投稿日時: 2003-12-01 12:36
例外のメッセージだけ見ると、どうやらpublicでないメンバにアクセスしているために
発生した例外のように見受けられます。

もしよろしければ、FishDbBeanのソースと、
もしTomcatを使っておられるのならwebapps/axis/WEB-INF/server-config.wsddの
FishDbBeanの設定部分(おそらく、service name="FishDbBean"とか書いてある部分)を
提示していただけませんでしょうか?

そうすれば、より詳しいことがわかるかもしれません。
ただし、保証はできませんが。
こまったちゃん
会議室デビュー日: 2003/11/30
投稿数: 9
投稿日時: 2003-12-01 18:27
レス、ありがとうございます。
遅くなってすみませんが、よろしくお願いします。

FishDbBean.java **************************************
package turip;
public class FishDbBean implements java.io.Serializable
{
private int colMaxInt;

FishDbBean()
{
colMaxInt = 0;
}

public int getColMaxInt() { return colMaxInt; }
}

server-config.wsdd ************************************
<service name="FishDbService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="session"/>
<parameter name="className" value="turip.FishDbBean"/>
</service>

と、なっています。
記事のサンプルと同じ様にしているのになぜこれが動かないのか分かりません。
Emacs信者
常連さん
会議室デビュー日: 2003/08/10
投稿数: 38
投稿日時: 2003-12-01 18:30
コンストラクタがpublicになっていないからではないでしょうか?
こまったちゃん
会議室デビュー日: 2003/11/30
投稿数: 9
投稿日時: 2003-12-01 20:09
うぅぅーーー  [涙]ポロリ
ありがとうごさいました。
出来ました。

まさかコンストラクタまでpublicにしないといけないんなんて
デフォルトでprivateということになっていたのですね
とても恥ずかしいです。ぜんぜん気が付きませんでした。
実は3日ぐらい悩んでいました。
Emacs信者さん、ありがとうございました。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-12-03 14:30
引用:

こまったちゃんさんの書き込み (2003-12-01 20:09) より:
まさかコンストラクタまでpublicにしないといけないんなんて
デフォルトでprivateということになっていたのですね



デフォルトはpackage private(同一パッケージ内はアクセス可能)です。
こまったちゃん
会議室デビュー日: 2003/11/30
投稿数: 9
投稿日時: 2003-12-03 19:10
ukさん、ありがとうございます。
Javaの情報隠蔽ということでしょうか。
それにしても厳しいですね
Javaのパッケージはちょっと解りずらいです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-12-03 20:23
引用:

こまったちゃんさんの書き込み (2003-12-03 19:10) より:
ukさん、ありがとうございます。
Javaの情報隠蔽ということでしょうか。
それにしても厳しいですね
Javaのパッケージはちょっと解りずらいです。



package privateはJava独特の機構なので、わかりずらいと思います。通常は明示的に
指定したほうがいいでしょう。私はpackage privateなフィールドやメソッドを定義した
ことはないです。

それと、アクセス制御の点を除けばパッケージは単なる名前空間と考えていいと思います。
#要するにクラス名がかぶらないように修飾するためのもの、と

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