1

注:これはクロスポストではなく、さまざまな質問をします(webapp 間でオブジェクトを共有する場合の関連する ClassCastError

同じ tomcat インスタンスで 2 つの異なるコンテキストで実行されている 2 つの Web アプリケーションがあります。入力した名前に関係なく、2 番目のアプリケーションが最初のアプリケーション コンテキストを取得しようとすると、オブジェクトは同じコンテキストであり、これは間違っています。

public void contextInitialized(ServletContextEvent sce) {
       ServletContext context= sce.getServletContext().getContext("/bling");
       ServletContext context2= sce.getServletContext().getContext("/bla");

オブジェクト context と context2 の両方に、このオブジェクト ID org.apache.catalina.core.ApplicationContextFacade@4376 があります。

私はtomcat7を使用しています。任意のヒント?tks

更新: すべての良い提案に感謝します。問題は、2 番目の webapps (上記のスニペットがある場所) がサーバーの ROOT にデプロイされている場合にのみ発生します (私の構造では必須であり、変更できません)。ヒントは以上です。わかりました。

4

1 に答える 1

2

タイミングの問題だと思います。おそらく、ServletContext A が初期化され、ServletContext B を取得しようとすると、ServletContext B はまだ初期化/デプロイされていません。

これを証明するには、サーブレット doGet 内で別のテストを試し、両方の Web アプリケーションが適切にデプロイされていることを確認してから呼び出します。

于 2013-03-28T05:19:56.380 に答える