我正在使用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初始化方法完成的。
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之后进行查找
此致
答案 0 :(得分:0)
确保您在 META-INF / context.xml
中有以下一行<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver"
......
name="master" // this line is important
.......
/>