- - PR -
クロスコンテキスト使用時のキャスト
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-29 18:11
いつもお世話になっています。
ServletContext経由で、他のwebアプリにオブジェクトを転送したいと考えています。 setAttributeを使用して転送すると、取得時にClassCastExceptionが発生してしまいます。 とりあえず現在は、シリアライズを使用してbyte[]を使用して引き渡すことで回避していますが、 ほかに何かいい方法はないのでしょうか?
| ||||
|
投稿日時: 2005-11-29 19:40
ServletContextはWebアプリケーション毎に作成されるので、それを経由してオブジェクトを渡すことはできないと思います。どうやっているんでしょう???
問題としては異なるクラスローダで読み込まれていることに起因するので、システムクラスパスにクラスを通すことで一応回避できそうです。ただし再デプロイで更新できなくなりますが。 これ↓も参考になるかもしれません。 ・BEA トラブルシューティング ガイド サポート診断パターン > ClassCastException の調査 http://www.beasys.co.jp/cs/support_news/product_troubleshooting/Class_Cast_Exceptions_Pattern.html | ||||
|
投稿日時: 2005-11-29 23:14
「ドッペルゲンガー」で検索すると幸せになれるかもしれません。
| ||||
|
投稿日時: 2005-11-30 02:48
検索してみたんですが、なんだかよくわかりません。
なんか面白い情報があるんですか? > 「ドッペルゲンガー」 | ||||
|
投稿日時: 2005-11-30 09:29
わたしも昔、これではまったことがあったので、検索してみました。
これですかね? http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/3.html #前にはまったときは、リフレクションで回避してしまいました・・・ | ||||
|
投稿日時: 2005-11-30 10:39
いろいろ情報、ありがとうございました。
まあ、ClassLoaderが違うので、単純なキャストは無理というのはわかっていたんですが、 せっかく、他のwebアプリのServletContextを取得できるAPIがあるんだから、 その辺の移送を簡単にできるAPIがなんか無いものかな?と思って質問しました。 どうもなさそうなので、現状のシリアライズベースのコードのままいこうと思います。 ありがとうございました。 | ||||
|
投稿日時: 2005-11-30 10:46
>せっかく、他のwebアプリのServletContextを取得できるAPIがあるんだから、
そんなAPIありましたっけ?どうやるんでしょうか? | ||||
|
投稿日時: 2005-11-30 11:10
>インギさん
で、コンテキストルートが「/b」のServletContextを取得できます。 詳細は、 ServletContext#getContext(String) のAPIをご参照ください。 |