was5.0上发布应用时lookup数据源的问题,请大虾进来看看!

lgf6 2004-01-30 04:40:41
我在was5.0上配置好oralce的数据源后名称为jdbc/changqing.
写了一个jsp对数据源进行查找,运行成功!
代码如下:
DataSource ds = (DataSource)ctx.lookup("jdbc/changqing");
//获取连接
conn = ds.getConnection();

但是我把获取连接的代码放到了一个DBconncetion.java类中,从jsp中来调用此类里的这个方法,系统却抛出如下异常:
4-1-30 15:57:32:953 CST] 74cbe7f4 ConnectionFac E J2CA0036E: 在资源 jdbc/changqing 使用的 com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl 上调用方法集 DataSourceProperties 时,发生异常:java.lang.reflect.InvocationTargetException: java.lang.NoClassDefFoundError: javax/transaction/xa/XAException
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java(Compiled Code))
at com.ibm.ws.rsadapter.DSConfigurationHelper.createDataSource(DSConfigurationHelper.java:495)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource$1.run(WSRdbDataSource.java:441)
at java.security.AccessController.doPrivileged(Native Method)

[04-1-30 15:57:33:000 CST] 74cbe7f4 ConnectionFac E J2CA0009E: 尝试实例化资源 jdbc/changqing 使用的 ManagedConnectionFactory 类 com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl 时,发生异常:java.lang.reflect.InvocationTargetException: java.lang.NoClassDefFoundError: javax/transaction/xa/XAException
at java.lang.Class.newInstance0(Native Method)

--- Begin backtrace for targetException
java.lang.NoClassDefFoundError: javax/transaction/xa/XAException
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java(Compiled Code))
at com.ibm.ws.rsadapter.DSConfigurationHelper.createDataSource(DSConfigurationHelper.java:495)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource$1.run(WSRdbDataSource.java:441)
at java.security.AccessController.doPrivileged(Native Metho


这个问题困扰我好久了,请各路高手帮帮我呀。谢谢!
...全文
205 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baffling 2004-08-08
  • 打赏
  • 举报
回复
gz
jstar2000 2004-02-03
  • 打赏
  • 举报
回复
资源适配器有问题,在web.xml中如下:
<resource-ref id="ResourceRef_1071544875547">
<res-ref-name>jdbc/demo</res-ref-name>
<res-type>javax.resource.cci.ConnectionFactory</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
然后
ds = (DataSource) ic.lookup("jdbc/demo");
ds.getConnection();
应该就行了,如果不行的话,你的连接工厂可能设的有问题。
lgf6 2004-02-02
  • 打赏
  • 举报
回复
冰雪你好,首先感谢你及时的答复。
我又在web.xml配置了一下dataSource如下:
<resource-ref id="ResourceRef_1073876639797">

<res-ref-name>jdbc/changqing</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Application</res-auth>

<res-sharing-scope>Shareable</res-sharing-scope>

</resource-ref>

然后在程序中这样查找数据源:
try{
if(ds==null){
InitialContext ic = new InitialContext();
System.out.println("ic = " + ic );
ds = (DataSource) ic.lookup("java:comp/env/jdbc/changqing");
}
Connection con = ds.getConnection();
return con;
}catch(javax.naming.NamingException ne){
System.out.println("Get JNDI Error ......" + ne.toString());
ne.printStackTrace();
}catch(Exception e){
System.out.println("Init DB Connection Failed!" + e.toString());
e.printStackTrace();
}

另在我的lib路径里有j2ee.jar包
可是还是抛出异常如下:
04-2-2 9:28:32:594 CST] 62b1364a Helpers W NMSV0610I: 从 javax.naming.Context 实现中抛出 NamingException。详细信息如下:
上下文实现:com.ibm.ws.naming.java.javaURLContextRoot
上下文方法:lookup(String)
上下文名称:java:
目标名称:java:comp/env/jdbc/changqing
其它数据:
异常堆栈跟踪:com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. Root exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. Root exception is java.lang.reflect.InvocationTargetException: java.lang.NoClassDefFoundError: javax/transaction/xa/XAException
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java(Compiled Code))
at com.ibm.ws.rsadapter.DSConfigurationHelper.createDataSource(DSConfigurationHelper.java:495)
at com.ibm.ws.rsadapter.spi.WSRdbDataSource$1.run(WSRdbDataSource.java:441)
at java.security.AccessController.doPrivileged(Native Method)

Get JNDI Error ......com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. [Root exception is com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. [Root exception is java.lang.reflect.InvocationTargetException]]
[04-2-2 9:28:32:641 CST] 62b1364a SystemOut O testJDBC conn = null

请麻烦您再帮我看看是什么原因好吗?
iceleighton 2004-01-31
  • 打赏
  • 举报
回复
连接:
http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&oe=UTF-8&frame=right&th=c20f6742fd107ef5&seekm=9t2lo2%24jss%241%40news.boulder.ibm.com#s
iceleighton 2004-01-31
  • 打赏
  • 举报
回复
First, to reference the javax.transaction class, need to add the j2ee.jar
into the websphere classpath. (not the directory, but the actual jar
file)

Give that a try ?

Secondly are you doing your XA for a session bean ?
Bearing in mind that the Infocenter states "JTA only for CMP entity
beans"
(for Oracle, at least )

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧