2012-04-15 43 views
3

GlassFish Opensource Edition上で動作するテストEJB3アプリケーションを作成しました。GlassFishの「ルックアップ」時間が遅い

同じホスト(クライアントとアプリケーションサーバーの両方が「localhost」で動作している)からGlassFishに接続しています。

InitialContext.lookup()を使用してリモート(ステートフル)オブジェクトを取得し、それを通常のJavaオブジェクトのように操作します。

唯一の問題は、15秒かかり、この単一の呼び出し、次のとおりです。

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

私は「ハンドシェイク」と「初期化」のいくつかの種類が存在しなければならないことを理解し、これはとてもくそです遅い

残りの相互作用(多くのシリアル化されたオブジェクトが交換されているいくつかのリモート呼び出し)は約0.1秒しかかかりません!

なぜそれほど時間がかかるのかわかりますか?

+0

初めてFooRemoteServiceをインスタンス化するのは初めてのことです...その終わりに集中的に処理していますか? – Torious

+0

まったく...私がローカルの仮想マシンで「新しい」場合は、数ミリ秒かかる – gd1

答えて

0

は、私はそれはあなたが同じアプリケーションが別のホストやネットワーク周りのそれのためのEJB仕様検索で展開している可能性がだから、あなたが、あなたのホストのIPアドレスを指定して、あなたの初期コンテキストをintanciateすることをお勧め

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

敬具。