使用JNDI名称查找Database的问题
小弟最近正在学习在jboss4.2.2.GA中配置castor1.3,发现网上的很多资料中(如http://blog.csdn.net/chrisrc/archive/2007/09/22/1796343.aspx)提到了这样一个问题,“将JDOManager实例添加到java:comp/enb/jdo名称空间下,以遵循查找JDBC资源的惯例”,并且给出了下面的例子:
InitialContext ctx;
UserTransaction ut;
Database db;
// Lookup databse in JNDI
ctx = new InitialContext();
db = (Database) ctx.lookup("java:comp/env/jdo/mydb");
// Begin a transaction
ut = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
ut.begin();
// Do something
. . .
// Commit the transaction, close database
ut.commit();
db.close();
我的理解是,通过查找JNDI名称"java:comp/env/jdo/mydb",返回一个Database类型的对象。我想请教下,在jboss中要配置哪些文件,才能在查找"java:comp/env/jdo/mydb"时,返回对应的Database对象呢?也就是说,如何配置
jboss,才能使
db = (Database) ctx.lookup("java:comp/env/jdo/mydb");
这行代码成功运行呢?希望大家不吝赐教,小弟在这里先谢谢各位了。
附:castor英文原版文档的地址http://www.castor.org/jdo.html
[解决办法]
该回复于2010-12-06 08:52:28被版主删除
[解决办法]
请参考:\docs\examples\jca\*.-ds.xml
DTD参考:\docs\dtd
[解决办法]
感谢1楼的回复,但是你提到的配置方法是用来配置DataSource的,返回的是DataSource类型的对象,而不是Database类型的,我现在是想得到Database类型的返回值。
[解决办法]
Sorry,应该是“感谢2楼的回复”。
[解决办法]
二楼的回复就是你的问题啊,你在jboss里面配置好了DataSource就是给命名了啊,然后就可以用你的那句语句返回对应的数据库对象了
[解决办法]
感谢5楼。
通过配置web.xml、jboss-web.xml和*-ds.xml的方法确实可以用JNDI名称取到DataSource类型的对象,这个我已经实现了。现在的问题是,在castor的文档中提到的是直接取回Database类型的对象(帖子中制红的部分),这块按照原来的配置方法,取的时候会报错的。