在SessionBean中可以访问,代码类似如下:
private Connection getConnection() throws java.sql.SQLException {
try {
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/*");
return ds.getConnection();
} catch(NamingException ne) {
log("UNABLE to get a connection from demoPool!");
log("Please make sure that you have setup the connection pool properly");
throw new EJBException(ne);
}
}其中*是你在weblogic中的DataSource名。
private Connection getConnection() throws java.sql.SQLException {
try {
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/*");
return ds.getConnection();
} catch(NamingException ne) {
log("UNABLE to get a connection from demoPool!");
log("Please make sure that you have setup the connection pool properly");
throw new EJBException(ne);
}
}其中*是你在weblogic中的DataSource名。
解决方案 »
- birt分组排序和导出excel问题-------------------------急!!!!
- jsf查询数据库产生异常#{login.getTest}: java.lang.NullPointerException
- 求一个简单的分页
- 欢迎广大java爱好者加高级群,一起学习研究
- 请问配置servlet servlet-name 一定要和 servlet-class 名称一样吗?
- 十一写了一份自己的持久层框架
- 关于struts2和json不懂的地方
- dom4j解析xml文件时,xml文件只能放在英文目录下吗?
- 求教:Spring 3如何用注解方式注入数组?
- 有谁知道深圳博大软件是什么样的公司?好不好
- SunJ2ee1.3Server中EJB中连接ORACLE?
- 谁有jmx in action这本书
/**
* Gets JDBC connection from the connection pool.
* @return The JDBC connection
*/
private Connection getConnection() throws Exception {
try {
javax.sql.DataSource ds = (javax.sql.DataSource)
ctx.lookup("java:comp/env/jdbc/在配置文件定义的名字");
return ds.getConnection();
}catch (Exception e) {
System.err.println("Couldn't get datasource!");
e.printStackTrace();
throw e;
}
}
你说的不对吧,通过
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("*");
这样才是jdni的名字吧
如果通过环境变量的方式来访问,必须在xml描述器里做一些设置才行
javax.sql.DataSource ds = (javax.sql.DataSource) ctx.lookup("java:comp/env/*");
<resource-ref>
<description />
<res-ref-name>jdbc/160</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
weblogic-ejb-jar.xml
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/160</res-ref-name>
<jndi-name>160</jndi-name>
</resource-description>
</reference-descriptor>只有做了这样的关联,才能
dataSource = (DataSource)envCtx.lookup("jdbc/160");
否则只能
dataSource = (DataSource)envCtx.lookup("160");
而且,ctx初始化的方法也不一样你这么说容易误导别人吧
javax.sql.DataSource ds = (javax.sql.DataSource) ‘ORACLE需要数据
源吗?它不是自带监听程序TNS吗??
ctx.lookup("java:comp/env/jdbc/在配置文件定义的名字");
我的回答(“其中*是你在weblogic中的DataSource名”)的确有问题!(可能是我常用默认值的缘故)经过你的更正相信libotao明白了吧!
不过在lookup时,你作为资源引用,如果不加上“java:comp/env”,我不知道能不能lookup到,提出质疑,因为我没试过,不吝赐教!
还有,我看很多书上在做映射都以jdbc这个前缀开头(包括你的解答),不知道为什么。我试过在lookup中,只要做好了映射,不必加上jdbc/也可以lookup到!
这里与Oracle是没有关系的,你现在的程序配置在J2EE应用服务器上面,由应用服务器可以实现很多功能,而且应用服务器充当Adaptor的作用,这里的数据源就是从应用服务器上取得,应用服务器自己再同Oracle打交道,建立好连接池,你只要从应用服务器去数据源连接就可以了。
我怎么每次用的时候(我自己编写了一些内部函数 session bean)都要连接一次???
说 connection 已经断开。
jdbcDataSource.5.url=jdbc:cloudscape:rmi:ExampleDB;create=true
jdbcDriver.0.name=COM.cloudscape.core.RmiJdbcDriver
jdbcXADataSource.0.name=jdbc/XACloudscape
jdbcXADataSource.0.classname=COM.cloudscape.core.RemoteXaDataSource
的设置。
那么如果在程序中连接oracle,上述设置如何进行?