我有一个使用 Jersey3 的 Tomcat 10、Java11 的 WebApp。我在我的数据库中定义了一个 ConnectionPoolcontext.xml
来处理与我的 OracleDB 的连接,现在我正试图通过@Resource
注释访问我的控制器中的数据源。这应该调用 JNDI 查找。不幸的是,我总是得到一个 NPE,因为它似乎在运行时找不到资源......我做错了什么?或者正确的映射名称/查找是什么?
@Path("/data")
public class DataController {
@Context
ServletContext context;
@Resource(lookup = "java:/jdbc/myDB") //also tried java:/comp/env/jdbc/myDB and mappedName="jdbc/myDB"
protected DataSource ds; //always null
<Context name="myapp">
<Resource type="javax.sql.DataSource"
name="jdbc/myDB"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@//localhost:1521/orcl"
username="xy"
password="xy"/>
根据教程,当我直接在 context.xml 中定义资源时,引用链接是可选的。
感谢您的任何意见!