最終的にRMIを使用しました。このチュートリアルを使用して、動作させました:http ://sacrosanctblood.blogspot.com/2008/11/rmi-tutorial-rmi-and-tomcat.html 。重要なのは、サーブレットの起動時に、スタブアウトするオブジェクトがメソッドスコープではなくクラススコープであることを確認する必要があるということです。また、セキュリティマネージャのコードは必要ありません。
使用しているstartServerサーブレットのコードは次のとおりです。
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();
}
}
}
}
そして、これがクライアントコードです:
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;
}
現在、すべて同じサーバーで実行されていますが、後で2つを動作させることができると確信しています。