WebLogic and Tomcat 使用JDBC2.0的差异

03-12-31 sirily
今天在使用JDBC2.0(使用DataSource)的方式连接数据库时,发现weblogic和tomcat的差异:

1.众所周知,在tomcat中,如果jsp/servlet要使用DataSource,必须在web.xml中配置<resource-ref>标签。而在weblogic中,一旦配置该标签,就会出现“Could not locate resource-ref jdbc/xxx in application environment”错误(Weblogic中已配置好ConnectionPool和(Tx)DataSource)

2.在tomcat中,配置好<resource-ref>标签后,程序中必须使用dataSource = (DataSource)ic.lookup("java:comp/env/jdbc/xxx");访问,即"java:comp/env"要写上。而在weblogic中,只需ic.lookup("jdbc/xxx");获取DataSource即可。

以上两个问题的出现,严重与java提倡的"一次编写,处处运行"思想悖理,请问大家,是tomcat的问题还是weblogic的问题。j2ee的规范里对外部resource的连接是怎么规范的?

sirily
2003-12-31 11:56
写漏了,我上面提到的标签是<resource-ref>标签,配置例子如下

<resource-ref>

<description>DistDB</description>

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

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

<res-auth>Container</res-auth>

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

</resource-ref>

sirily
2003-12-31 11:58
"resource-ref"标签

cats_tiger
2003-12-31 14:19
确实如此

但是这不与"一次编写,处处运行"思想悖离

1.在不同的container下当然应该采用不同的配置,web.xml不是java

2.不要将jndi名写在程序中,应该集中管理,可以参考service locator模式

猜你喜欢