JBOSS,datasource,in init() mothod couldn't lookup datasource

Discussions

General J2EE: JBOSS,datasource,in init() mothod couldn't lookup datasource

  1. Hi all!

    JBOSS,datasource jndi,datasource's config should be correct!But In the init() mothod of HttpServlet's instance I could not lookup datasource.

      env:

      jboss3.26+linux+jdk1.4.2,DB:oracle9i
     
      I met with a little matter in my project.

      When I init the data in my startup-servlet,I can't lookup the datasource.

      Datasource's config should be correct! I'm reffering to 'example/jca/oracle_ds.xml'

      Thus once the web-app has deployed,it is normal for accessing the datasource! I'm worried and indignant.

      Maybe some config was missing or wrong! Help me! thank u very very very much!

    1、config datasource:
    <!--test_oracle_ds.xml-->
    <datasources>
      <local-tx-datasource>
        <jndi-name>jdbc/test</jndi-name>
    ....

      ps:config in web.xml and jboss-web.xml
      <!--web.xml-->
      <resource-ref>
       <description>DB Connection</description>
         <res-ref-name>jdbc/test</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
      </resource-ref>
    ==============================
      <!--jboss-web.xml-->
    <jboss-web>
     <resource-ref>
            <res-ref-name>jdbc/test</res-ref-name>
            <jndi-name>java:/jdbc/test</jndi-name>
        </resource-ref>
    </jboss-web>

    2、java code

    StartupServlet.java:

    init(..)

            Context init = new javax.naming.InitialContext();
            ctx = (Context) init.lookup("java:comp/env");
            DataSource ds = (DataSource)ctx.lookup("jdbc/test");

    or Context ctx = new javax.naming.InitialContext();
              DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");

    or Context ctx = new javax.naming.InitialContext();
              DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/test");
     
    All of this are fail,they give me the info: datasource no bound

    more info :"javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: jdbc not bound]"

    jdbc not bound: this jdbc must be refer to the "jdbc" of "<jndi-name>jdbc/test</jndi-name>",
    as I have tested "<jndi-name>test</jndi-name>", then give me info- "test not bound".

    The rather that when I read the log,I find the datasource has been bound to "java:/jdbc/test".

    The state of datasource must be valid.
    ........
      mbeans:
        jboss.jca:service=LocalTxCM,name=jdbc/test state: Registered
        jboss.jca:service=ManagedConnectionPool,name=jdbc/test state: Started
        jboss.jca:service=ManagedConnectionFactory,name=jdbc/test state: Started
    .....
    .......
    [org.jboss.web.tomcat.tc5.TomcatDeployer] Linking 'jdbc/test' to JNDI name: java:/jdbc/test

    Thus once the web-app has deployed,it is normal for accessing the datasource! I'm worried and indignant.

    I greatly appreciate your timely help.

    The relative oracle jar(ojdbc14.jar) has been copied into "...server/all/lib".

    I greatly appreciate your timely help.

    Threaded Messages (4)

  2. help!thank u![ Go to top ]

    help!thank u!
  3. shit,garbage[ Go to top ]

    shit,garbage
  4. hahaha,I have solved the problem.[ Go to top ]

    hahaha,I have solved the problem.

    We maybe should offer the answer if we knew,so that it can save many people's time!

    I need thank the jboss-wiki,
    http://wiki.jboss.org/wiki/Wiki.jsp?page=DependOnDataSource .

    That gives me the inspiration!

    Thus in your admin-doc,JBoss Admin Development Guide(jboss3.2.6), Figure 3.4,didn't offer the depends element.

    I can find some info in ...docs/dtd/jboss-web_3_2.dtd.
    but when I wrote this message, I found the Figure 9.1----"The complete jboss-web.xml descriptor DTD", ah... ah... ah....

    Reference http://wiki.jboss.org/wiki/Wiki.jsp?page=DependOnDataSource .

    I modified ...sar/...war/WEB-INF/jboss-web.xml,then run jboss,I have looked up the datasource!!!

    <jboss-web> jboss.jca:service=LocalTxCM,name=jdbc/test
    </jboss-web>

    In the log,I can find these info:

    2005-11-08 19:12:49,859 DEBUG [org.jboss.system.ServiceController] waiting in start jboss.web.deployment:war=Crm.war,id=843359960 on jboss.jca:service=LocalTxCM,name=jdbc/test

    ...........

    2005-11-08 19:12:51,046 DEBUG [org.jboss.system.ServiceController] Starting dependent components for: jboss.jca:service=LocalTxCM,name=jdbc/test dependent components: [ObjectName: jboss.web.deployment:war=Crm.war,id=843359960
    state: CREATED
    I Depend On: jboss.jca:service=LocalTxCM,name=jdbc/test

    Depends On Me: ]
    2005-11-08 19:12:51,046 DEBUG [org.jboss.system.ServiceController] starting service jboss.web.deployment:war=Crm.war,id=843359960


    In more detail,I will offer later on. Thank u jboss.Inc!!!
  5. sorry![ Go to top ]

    sorry!
    <jboss-web>
    jboss.jca:service=LocalTxCM,name=jdbc/test
    </jboss-web>

    should be ,maybe use (code /code),:0)

    "jboss.jca:service=LocalTxCM,name=jdbc/test" should be in

    depends /depends,

    u can read the message in jboss forum
    http://www.jboss.com/index.html?module=bb&op=viewtopic&t=70600

    Code:
    <jboss-web>
    <depends>
    jboss.jca:service=LocalTxCM,name=jdbc/test
    </depends>
    </jboss-web>