- - PR -
axisでリモートのオブジェクトのメンバ関数を呼ぶとエラー
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-03 21:29
> 私はpackage privateなフィールドやメソッドを定義したことはないです。
やはりそうですか、本来無用なアクセスを避ける為の情報隠蔽ということなのでしょうが、実際問題トラブルの元になっていると思います。特にクラスが多くなってかっこよくパッケージ単位にまとめようとしたりしたら問題がでそぅ。 今回のことを振り返ってみればコンストラクタの所で例外が出なかったのが気になります。 自分が定義したコンストラクタがprivateな為デフォルトのコンストラクタ(確かあったような?)がデフォルトオブジェクトを生成したのでしょうか。実際nullかどうかチェックしてもひっかかりませんでした。だとしたらこれは大変厄介なことと・・・。 実際メンバ関数を呼んだときに例外が投げられています。 axisが間に入る為にますます解りにくくなります。 | ||||||||||||
|
投稿日時: 2003-12-03 21:42
パッケージ単位にまとめるのは問題ありません。また、トラブルの元になっているというのは なぜそう思うのですか? package privateを使うのはC++のfriendと同様限定されたケース だと認識しているのですが。
ではなくて、Axisのクラスからリフレクションを使って該当のクラスを生成しようとして エラーになっているのでしょう。デフォルトコンストラクタは、コンストラクタを何も定義 しなかった場合にpublicで引数を取らないコンストラクタが生成されるものなので、今回の ように明示的に定義した場合は生成されません。
メンバ関数ってなんのですか? そもそもWebサービスの実装クラスを直接呼べないでしょう? [ メッセージ編集済み 編集者: uk 編集日時 2003-12-04 11:47 ] | ||||||||||||
|
投稿日時: 2003-12-04 00:11
大変参考になります。
もっと勉強が必要だと感じています。 >該当のクラスを生成しようとして エラーになっているのでしょう このエラーになったときに例外は投げられないものなのでしょうか 実際例外が投げられてくるのは生成されていたと思われていた オブジェクトの(JavaBeans)のメンバ関数(アクセッサ)を呼び出した 時でした。 | ||||||||||||
|
投稿日時: 2003-12-04 01:04
そもそも SOAP はリモートオブジェクトなの?
インスタンス参照を持てるような仕様ではないはず。 ただの RPC なのでは? > まさかコンストラクタまでpublicにしないといけないんなんて AXISのサンプルでは、public なっていなかったのでしょうか? クラスの宣言は public にしたのですよね?だったらなぜコンストラクタを public にしなかったのでしょうか? public クラスでコンストラクタを public にしないということは、「クラスは公開するが、勝手にインスタンスを 作成されては困る」ということを意味します。 [ メッセージ編集済み 編集者: Keisuke 編集日時 2003-12-04 07:14 ] | ||||||||||||
|
投稿日時: 2003-12-04 12:44
Webサービスの仕組みをまず理解されたほうがいいと思います。該当の記事をざっと 見ましたが、「生成されていたと思われていたオブジェクト」というのはおそらく クライアントのプロキシクラスのインスタンスでしょう。エラーが出ているのはWebサービス の実装クラスのインスタンスを生成するところです。実際にWebサービスへの呼び出しが あって初めて実装クラスのインスタンスが生成されるので、プロキシのメソッド呼び出しで エラーになるのは当然ですね。 | ||||||||||||
|
投稿日時: 2003-12-04 20:28
>「クラスは公開するが、勝手にインスタンスを 作成されては困る」ということを意味します。
はい、まったくそのとうりです。うっかりしていました。 >Webサービスの仕組みをまず理解されたほうがいいと すみません、まだ仕組みがよく解っていません。 >実際にWebサービスへの呼び出しがあって初めて実装クラスのインスタンスが生成されるで、プロキシのメソッド呼び出しで エラーになるのは当然ですね。 そうだったんですか、それで今回のことが理解できたように思います。わざわざ該当記事まで見ていただいてありがとうございました。 | ||||||||||||
