全て、
Tomcat サーバーにデプロイされた 2 つの Web アプリケーション、Web1 と Web2 があります。Web1 のクラスが Web2 のクラスのメソッドを呼び出すようにします。これを行う 1 つの方法は、Web サービスを使用することです。同じ Web アプリケーションのクラスでメソッドを呼び出すのと同様の方法は他にありますか?
ありがとう。
全て、
Tomcat サーバーにデプロイされた 2 つの Web アプリケーション、Web1 と Web2 があります。Web1 のクラスが Web2 のクラスのメソッドを呼び出すようにします。これを行う 1 つの方法は、Web サービスを使用することです。同じ Web アプリケーションのクラスでメソッドを呼び出すのと同様の方法は他にありますか?
ありがとう。
いくつかの記事を検索したところCrossContext
、Tomcat の切り替えを使用して上記のシナリオが確実に可能です。
次の要素を context.xml に設定します<Context crossContext="true">
そしてgetServletContext().getContext("/Web2");
。
ただし、まだ試していません。
はい、 javax.servlet.ServletContextおよびjavax.servlet.RequestDispatcher APIを使用して実行できます。Web1 から実行する方法は次のとおりです。
ServletContext otherContext = servletContext.getContex("/Web2");
RequestDispatcher dispathcer = otherContext.getRequestDispatcher("/a/b.jsp");
dispatcher.forward(request, response);
//or
dispatcher.include(request, response);
Web アプリケーション間で共有するクラスを個別の jar にパッケージ化します。それらを common/lib の下に配置して、共通のクラスローダーがクラスをロードし、両方の Web アプリケーションで利用できるようにします。次に、jndi を使用して web2 でインスタンスを公開し、web1 から検索してメソッドを呼び出します。
それほど単純ではありません。クラスを app1 から app2 に共有およびインポートできますが、それらはすべて他のクラスとリンクされている可能性があります。したがって、たとえば計算を行うために使用される Bean のような小さなサービスを除いて、このアイデアはあまり良くありません。人々が Web サービスを頻繁に使用しているのには理由があります ;)。