2011-11-15 6 views
0

私は学校プロジェクトのために開発しているJava Webアプリケーションを持っています。プレゼンテーション層(サーブレット/ JSP)を1つのサーバーに配備し、ビジネス・ロジックを別のサーバーに配備する必要があります。2つのTomcatサーバーを互いに細かく分ける

2台のサーバーを接続するための解決策が必要です。

現在、私はRMIとAxis2について研究しています。

RMIを正常に動作させることができません。私はofficial tutorialをフォローしており、ローカルでセキュリティ例外を取得し続けており、Tomcatが関わっているとセキュリティが悪化すると想像しています。

Axis2は良い解決策のようですが、私はその上に立ち上がる時間が必要です。

私の質問は:2つのサーバを接続してビジネスレイヤを呼び出すことができる簡単な方法ですか?おそらく、Tomcatに何かが組み込まれているかもしれません。

RMIが事実上のプロトコルであり、私が使用すべきAPIである場合、TomcatでRMIを使用する上での良いチュートリアルはありますか?

私が使用しているサーバは両方ともTomcatを実行しています。

答えて

0

私はRMIを使用しました。このチュートリアルを使用して私はそれを働かせました:http://sacrosanctblood.blogspot.com/2008/11/rmi-tutorial-rmi-and-tomcat.html。キーは次のとおりです。起動サーブレットでは、スタブを外しているオブジェクトがクラススコープで、メソッドスコープではないことを確認する必要があります。また、セキュリティマネージャコードは必要ありません。ここで

は、私が使用しているのstartServerサーブレットのコードです:

public String getRemoteString() 
{ 
    String result = ""; 
    try 
    { 
     Registry registry = LocateRegistry.getRegistry(9345);    
     IRemote serv = (IRemote) registry.lookup(IRemote.serviceName); 

     result = serv.executeRemote("Test"); 
    } 
    catch (Exception e) 
    { 
     System.err.println("Remoteservice exception:"); 
     e.printStackTrace(); 
    } 

    return result; 
} 

は現在、それは同じサーバー上のすべてを実行しているが、私は:

public class startServer extends HttpServlet 
{ 
    public static boolean isRegistered = false;  
    public IRemote service = new RemoteImpl(); 

    @Override 
    public void init(ServletConfig config) throws ServletException 
    { 
     super.init(config);   
     if (!isRegistered) 
     { 
      try 
      {     
       IRemote stub = (IRemote) UnicastRemoteObject.exportObject(service, 0); 
       Registry registry = LocateRegistry.createRegistry(9345); 
       registry.rebind(IRemote.serviceName, stub); 
       System.out.println("Remote service bound"); 
       isRegistered = true; 
      } 
      catch (Exception e) 
      { 
       System.err.println("Remote service exception:"); 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

そしてここでは、クライアントのコードです私は後で2を働かせることができることを確かめてください。

2

データレイヤーがどれほど複雑かはわかりませんが、たとえばビジネスロジックサーバーにApache CXFを使用してRESTインターフェイスを実装できます。 Axis2を使用するよりも簡単です。

+0

彼は両方ともspring mvcを使用することができ、ビジネスレイヤーにjsonまたはxmlを返させることもできます。 – Kevin

1

多くの多くのオプションがあります。

  • 他からそれを読んで、片側からファイルを書きます。 "もう片方の"は、 "片面"が要求ファイルを書き込むフォルダを監視する無限ループを持たなければならない。
  • 使用sockets
  • 使用REST
  • RMI

あなたは、Linuxにしている場合:

あなたの環境を考えると、私はRESTに行くでしょう。

関連する問題