2012-04-15 36 views
3

我已經創建了一個在GlassFish Opensource Edition上運行的測試EJB3應用程序。Glassfish的慢「查找」時間

我正在通過同一主機連接到GlassFish(客戶端和應用程序服務器都在'localhost'上運行)。

我使用InitialContext.lookup()獲取一個遠程(有狀態)對象,然後與它交互,就像它是一個普通的Java對象。

唯一的問題是這樣的單呼,這需要15秒

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

我明白,必須有某種「握手」和「初始化」的,但這是這麼混賬慢

交互的其餘部分(幾個遠程調用與許多序列化對象交換)只需要大約0.1秒!

我怎樣才能找出它需要這麼長時間的原因?

+0

那麼它在第一次查找時就會實例化FooRemoteService ......它在最後的任何密集處理? – Torious 2012-04-15 16:25:15

+0

一點都不......如果我用本地虛擬機「新」它,它需要一些毫秒 – gd1 2012-04-15 16:40:06

回答

0

我建議你intanciate您最初的背景下,指定您的主機的IP,因爲它可能你已經在同一個應用程序部署在不同的主機和EJB規範搜索它在網絡

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

最好的問候。