您的位置:首页 > 数据库 > Oracle

JBOSS,datasource,But In the init() mothod couldn't lookup datasource.

2005-10-13 13:55 519 查看
各位好!
以下是我发布到jboss.org,theserverside.com,javaworld.com等论坛上的求助问题的帖子,竟然没有人回答我,很郁闷。
问题是:我配置的数据源绝对没有问题,可是我在StartupServlet的init方法中就是不能lookup到datasource,而一旦JBOSS启动完毕,程序就能正常lookup到datasource!我需要在系统启动时从数据库中读出数据来进行初始化。
在javaworld.com.tw的论坛上贴了一次后,还有个台胞答复我了,真是一家人,哈哈。老外大大的坏!我还在那些国外论坛上回复了几个帖子呢,娘的。
JBOSS,datasource jndi,datasource's config should be correct!But In the init() mothod of HttpServlet's instance I could not lookup datasource.
Hi all!
  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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐