我已经在GlassFish Opensource Edition上创建了一个测试EJB3应用程序。
我从同一主机连接到GlassFish(客户端和应用程序服务器都在'localhost'上运行)。
我使用InitialContext.lookup()获取一个远程(有状态)对象,然后我像它是普通的Java对象一样与它进行交互。
唯一的问题是这次单次通话需要 15秒:
FooRemoteService foors = (FooRemoteService)
context.lookup("java:global/FooApp/FooService!test.FooRemoteService");
我知道必须有某种“握手”和“初始化”,但这是所以非常慢。
其余的交互(多个远程调用与许多序列化对象交换)只需要大约0.1秒!
我怎样才能找出为什么需要这么长时间?
答案 0 :(得分:0)
我建议您将初始上下文指定为主机ip,因为您可能在不同主机中部署了相同的应用程序,并且EJB规范在网络中搜索它
Properties props = new Properties();
props.put(Context.PROVIDER_URL, "jnp://ip:1099");
InitialContext ctx = new InitialContext(props);
最好的问候。