我目前正在尝试了解Tomcat配置,但我在使用Eclipse时遇到了问题。
我在Eclipse上运行Tomcat 9服务器上的Dynamic Web项目。我没有使用Maven,因为这增加了一层我不完全理解的层。
我基本上想在项目中添加一个连接池,以便使用DataSource工厂访问我的数据库。为此,我在WebContent / META-INF /中添加了一个context.xml。它看起来像这样:
<Context path="/my-app" docBase="my-app" debug="99">
<Ressource
name="jdbc/postgres"
auth="Container"
type="javax.sql.DataSource"
description="Pool"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost:5432/my-app"
username="blabla"
password="blabla"
maxTotal="4"
maxIdle="2"
maxWaitMillis="10000"
/>
</Context>
代码中的某处我使用此资源:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup( "java:comp/env" );
DataSource ds = (DataSource) envCtx.lookup( "jdbc/postgres" );
Connection con = ds.getConnection();
不幸的是,第3行引发了NameNotFoundException
,称名称jdbc/postgres
未链接到上下文。
所以我阅读了很多关于此的文档,但无法找到原因。我是否将此context.xml文件放在Eclipse中的错误位置?
我尝试添加
<resource-ref>
<res-ref-name>jdbc/postgres</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
在我的WEB-INF / web.xml中我取得了一些进展,但又有了一个例外:
Cannot create JDBC driver of class '' for connect URL 'null'
我尝试过的其他方法是在前面调用带有java:
的JNDI资源,但它没有帮助:
DataSource ds = (DataSource) envCtx.lookup( "java:jdbc/postgres" );
欢迎任何关于我做错事的想法。
非常感谢。