なぜdoを取得しまNameNotFoundExcpetion使用時のコンテキストlookup("java:comp/env/MyBean")

StackOverflow https://stackoverflow.com/questions/653966

  •  19-08-2019
  •  | 
  •  

質問

なぜdoを取得しまNameNotFoundException利用の場合 context.lookup("java:comp/env/MyBean") な利用の場合 context.lookup(MyBean.class.getName()) ?

エラー報告書"なにバインドされたオブジェクトのためのjava:comp/env/MyBean"どうやって結合するのはなぜですか class.getName() まだ。なくなりましたjava:comp/env?

私を使用6.5,Glassfish2.1.

役に立ちましたか?

解決

java:comp/env 接頭辞を使ったリソースを参考にした。この抽象化とは、資源および実際のJNDI名のリソースです。で変更することができます。所の裏付資源(異なるサーバやコンテキストに影響のないご参照のコードです。

していだけに使われていたが、そのシェイプの作成を参考に、既存のリソース(JMS,JDBC,EJB---のように各モジュールが必要なアクセスの資源です。での展開を設定します。

チュートリアルから日こちらGlassfish例です。

他のヒント

私は、これはGlassfishのために真であるかどうかわからないけど、あなたはDEBUGをオンにした場合JBOSSの場合には、あなたが使用されるJNDI名を気づくことができます。

たとえば、DemoBeanという名前のセッションBeanのデプロイメント中に、あなたはserver.logファイルに次のログが表示されます。 -

2009-07-24 09:08:18747 DEBUG [org.jboss.ejb3.stateless.StatelessDelegateWrapper] jboss.j2ee作成します。jar = SessionBeanDemo.jar、名前= DemoBean、サービス= EJB3を 2009-07-24 09:08:DemoBean:18747 DEBUGは[org.jboss.ejb3.ProxyDeployer]何のためのリモートバインディングを宣言されていません 2009-07-24 09:08:18747デバッグ[org.jboss.ejb3.ProxyDeployer] DemoBeanためのリモートインタフェースがあります 2009-07-24 09:08:18747 DEBUG [org.jboss.ejb3.ProxyDeployer]遠隔デフォルトのバインディングは、ののjndiNameを持っているの のDemoBean /リモート

次に、あなたのクライアントコードで、あなたがこのようにそれを見ることができます: -

        InitialContext ctx;
        try {
            ctx = new InitialContext();
            DemoBeanRemote demo = (DemoBeanRemote) ctx.lookup("DemoBean/remote");
            System.out.println(demo.sayHello());
        } catch (NamingException e) {
            e.printStackTrace();
        } 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top