3 Replies Latest reply: Apr 29, 2004 6:43 AM by Jon Barnett RSS

    jndi datasource and ejb rules

    xs2iop Newbie

      Hello,

      I deploy a datasource : I put oracle-gaia-ds.xml on my default/deploy directory server as follow :


      <local-tx-datasource>
      <jndi-name>gaiaDS</jndi-name>
      <connection-url>jdbc:oracle:thin:@localhost:1521:gaia</connection-url>
      .....



      and access it with by a lookup in my bean :

      InitialContext jndiCntx = new InitialContext();
      DataSource ds = (DataSource)jndiCntx.lookup("java:/gaiaDS");
      and I get a jdbc connection from my datasource

      BUT

      if i use the following pattern : java:/comp/env/jdbc/gaiaDS
      as follow :


      <local-tx-datasource>
      <jndi-name>comp/env/jdbc/gaiaDS</jndi-name>
      <connection-url>jdbc:oracle:thin:@localhost:1521:gaia</connection-url>
      .....




      InitialContext jndiCntx = new InitialContext();
      DataSource ds = (DataSource)jndiCntx.lookup("java:/comp/env/jdbc/gaiaDS");
      and I CANNOT get a jdbc connection from my datasource
      with error ...

      EJBException : jdbc not bound.

      _______
      It's very strange, because jbosside console say me :
      .....bounding to JNDI name 'java:/comp/env/jdbc/gaiaDS'
      and the console on service : jboss:service=JNDIView say nothing...

      --------------
      ps : sorry Adrian, but I have search myself on net and different forum and I can clearly understand the problem.

      Best Regards
      Sébastien/Paris


        • 1. Re: jndi datasource and ejb rules
          Steve Lewis Expert

          I don't think you need to put the comp/env in the <jndi-name> tag. The container should take care of that. Not sure if that's the whole problem.

          Steve

          • 2. Re: jndi datasource and ejb rules
            xs2iop Newbie

            hello spiritualmechanic and thanks
            it's just i thank...and so, like a paranoiak, I test this suite :

            in file *-ds.xml : gaiaDS
            on lookup : lookup("java:/gaiaDS");
            --->OK

            in file *-ds.xml :...>jdbc/gaiaDS<...
            on lookup : lookup("java:/jdbc/gaiaDS");
            --->OK

            in file *-ds.xml : ...>env/jdbc/gaiaDS<...
            on lookup : lookup("java:/env/jdbc/gaiaDS");
            --->OK

            in file *-ds.xml : ...>comp/env/jdbc/gaiaDS<...
            on lookup : lookup("java:/comp/env/jdbc/gaiaDS");
            --->NOK with ex message :
            EJBException : jdbc not bound !!!!

            strange no?
            i can use the first solution with simple namespace, but i would like understand how to jboss make jndi context.

            how do you proceed yourself for naming rules?

            Regards
            bastien/xs2iop@yahoo.fr


            • 3. Re: jndi datasource and ejb rules
              Jon Barnett Master

              A java:comp/env/... is a local reference or alias for a JNDI name.

              So in my ejb-jar.xml I might have:

              <resource-ref >
               <res-ref-name>jdbc/amity/AmityPool</res-ref-name>
               <res-type>javax.sql.DataSource</res-type>
               <res-auth>Application</res-auth>
               </resource-ref>

              In my jboss.xml, I would have this:
              <resource-ref>
               <res-ref-name>jdbc/amity/AmityPool</res-ref-name>
               <jndi-name>java:/AmityPool</jndi-name>
               </resource-ref>


              So my lookup in the ejb would be:
              lookup("java:comp/env/jdbc/amity/AmityPool")



              You can read more on this and the use of XDoclet to help generate these at:
              http://www.amitysolutions.com.au/documents/JBossJNDI-technote.pdf