我正在使用一个 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 之后进行查找
问候,