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

各位好!

以下是我发布到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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值