Ste*_*eve 7 java resources tomcat jndi
我是新手,在Tomcat中设置JNDI资源并设置JNDI资源.
我继承了一个servlet应用程序.它通过WebLogic在测试服务器上运行.servlet应用程序以下列方式访问其数据库资源:
ctx = new InitialContext();
ds = (javax.sql.DataSource)ctx.lookup("myDataBaseName");
conn = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)
当我在测试JSP中尝试它时,它不起作用.我明白了
javax.naming.NameNotFoundException: Name myDataBaseName is not bound in this Context
Run Code Online (Sandbox Code Playgroud)
但是,如果我改变测试JSP代码,我就能使测试JSP工作:
ctx = new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("myDataBaseName");
conn = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)
我在TOMCAT_HOME/conf/context.html中有这个条目(我只是将它用作我的盒子上的开发环境)
<Resource name="myDataBaseName"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@blahblahblah:1521:database3"
username="joeuser"
password="password"
maxActive="20"
maxIdle="30"
maxWait="-1"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
我在TOMCAT_HOME/conf/web.xml中有这个:
<resource-ref>
<res-ref-name>myDataBaseName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
我读了大约10个关于相关问题的stackoverflow页面,但我不熟悉设置JNDI资源来抽象我的问题的解决方案.
如何更改Tomcat 7设置的方式以允许现有的servlet应用程序以"myDatabaseName"的形式访问其数据库?我没有选择改变servlet应用程序中的代码或改变WebLogic在测试服务器上的设置方式.
我需要改变我在我的计算机上设置Tomcat 7副本的方式(对于开发环境),以允许servlet应用程序以本帖子顶部的第一个引用代码块的方式访问其数据库.
使用您提供的配置,您应该能够执行以下操作:
ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:/comp/env/myDataBaseName");
conn = ds.getConnection();
Run Code Online (Sandbox Code Playgroud)