java - 上下文查找 Java 上的 javax.naming.NameNotFoundException
问题描述
我正在使用一个 Payara 应用程序服务器,我在该服务器上定义了一个连接池,以便在我的应用程序中查找它。从应用程序服务器到数据库的 ping 工作正常。
在我的 domain.xml 数据库资源配置如下:
<jdbc-resource pool-name="MasterPool" jndi-name="jdbc/master"></jdbc-resource>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.ClientDataSource40" name="MasterPool" res-type="javax.sql.DataSource">
...
</jdbc-connection-pool>
Context 的设置是在 servlet init 方法上进行的。
public void init() throws ServletException {
Context env = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory");
try {
env = new InitialContext(ht);
pool = (DataSource) env.lookup("master");
System.out.println("Data source found");
}
catch(NamingException ne) {
throw new ServletException(ne);
}
}
您能否就该消息提供一些见解:
javax.servlet.ServletException: javax.naming.NameNotFoundException: master
我试图在 jdbc/master 和 java:/comp/env/jdbc/master 之后进行查找
问候,
解决方案
确保您在META-INF/context.xml中有以下行
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver"
......
name="master" // this line is important
.......
/>
推荐阅读
- entity-framework - 何时使用拥有的实体类型而不是仅创建外键或将列直接添加到表中?
- c# - C# MVC 通过 JQuery AJAX 发送对象
- c++ - cpp中头文件的用途
- firebase - firebase.json 部署后身份验证
- excel - 如果值等于 0 时返回不等于 0 的语句
- go - 如何操作 HCL 抽象语法树?
- php - 从mysql表字段中检索时间戳
- javascript - .then() 在 promise 解决之前触发
- javascript - 按钮 onclick 回调中的 Firebase Web 引用 null
- swift - 故事板不自动调整大小