4

我创建了一个在 GlassFish Opensource Edition 上运行的测试 EJB3 应用程序。

我正在从同一主机连接到 GlassFish(客户端和应用程序服务器都在“本地主机”上运行)。

我使用 InitialContext.lookup() 获取一个远程(有状态的)对象,然后我与它进行交互,就像它是一个普通的 Java 对象一样。

唯一的问题是这个单次调用,需要15 秒

FooRemoteService foors = (FooRemoteService) 
    context.lookup("java:global/FooApp/FooService!test.FooRemoteService");

我知道必须有某种“握手”和“初始化”,但这太慢了

其余的交互(交换许多序列化对象的几个远程调用)只需要大约 0.1 秒!

我怎样才能找出它需要这么长时间的原因?

4

1 回答 1

0

我建议您指定您的主机 ip 的初始上下文,因为您可能将相同的应用程序部署在不同的主机上,并且 EJB 规范会在网络上搜索它

Properties props = new Properties();
props.put(Context.PROVIDER_URL, "jnp://ip:1099");
InitialContext ctx = new InitialContext(props);

此致。

于 2016-09-07T19:55:35.593 回答