0 Replies Latest reply: May 18, 2012 1:11 AM by 栗原 政彦 RSS

    UserTransactionをlookup出来ない問題

    栗原 政彦 Newbie

      JBossAS7.1.0 FinalのEJBを呼び出すJavaの単体のプログラムを作成している
      のですが、その中で、UserTransactionがlookup出来ない問題が発生しています。

       

      その原因が分からず、苦戦しております

       

      ・lookupする際のJNDI名の指定が悪いのか
      ・関連するプロパティファイルの設定が悪いのか
      ・そもそもUserTransactionはlookup出来ないのか


      環境


      Red Hat Enterprise Linux Server release 5.5 Beta (Tikanga)
      JBossAS7.1.0 Final
      java version "1.7.0_02"
      Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
      Java HotSpot(TM) Server VM (build 22.0-b10, mixed mode)

       

      JBossAS7.1.0に添付されている

      jboss-client-7.1.0.Final.jarを使って、Remote EJBにアクセスしようとしています。


      問題のソース


      final Properties env = new Properties();
      env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
      env.put(Context.PROVIDER_URL,"remote://localhost:4447");
      env.put(Context.SECURITY_PRINCIPAL, "apuser");
      env.put(Context.SECURITY_CREDENTIALS, "apuserpass");
      context = new InitialContext(env);

      UserTransaction userTransaction = (UserTransaction) context.lookup("java:comp/UserTransaction");

      lookupの際、下記の例外が発生する。

      jboss.naming.context.java.jboss.exported.comp.UserTransaction
      のJNDIが解釈されているようです。

      javax.naming.NameNotFoundException: comp/UserTransaction -- service jboss.naming.context.java.jboss.exported.comp.UserTransaction
              at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97)
              at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:177)
              at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:124)
              at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:70)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
              at java.lang.Thread.run(Thread.java:722)

       

      補足事項

      Securityについては、add-user.shにて、アプリケーション利用者として、追加済み。
      apuser/apuserpass

       

      参考にしたURL

      EJB invocations from a remote client using JNDI
      https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI

      Examples of JNDI mappings in previous releases and how they might look now

      https://docs.jboss.org/author/display/AS71/How+do+I+migrate+my+application+from+AS5+or+AS6+to+AS7

      UserTransaction
      New Namespaces

      java:comp/UserTransaction
      java:jboss/UserTransaction

       

      どちらもlookup出来ません。