因此,我有一个基本的DAO类,它使用Tomcat和Spring的InitialContext查找来建立连接,并且工作得很好:
Context initCtx = new InitialContext();
initialize((DataSource) initCtx.lookup(resourceName)); 现在,我已经扩展了这个基本DAO,并且正在使用play框架应用程序中的子类。但是,初始上下文查找不适用于play应用程序。错误说:
Caused by: javax.naming.NotContextException: comp is not a subcontext
at tyrex.naming.EnvContext.internalLookup(Unknown Source) ~[tyrex-1.0.1.jar:1.0.1 November 11 2003 1703]
at tyrex.naming.EnvContext.lookup(Unknown Source) ~[tyrex-1.0.1.jar:1.0.1 November 11 2003 1703]
at tyrex.naming.java.JavaContext.lookup(Unknown Source) ~[tyrex-1.0.1.jar:1.0.1 November 11 2003 1703]
at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[na:1.8.0]
at DatabaseFactory.<init>(DatabaseFactory.java:63) ~[Utilities-SNAPSHOT.jar:na]是否在仍然使用play框架的同时使用初始上下文查找功能?
发布于 2014-11-13 05:21:20
Play的JNDI环境由内存中的JNDI服务提供者提供。有一个Play助手类可以用来获取名为InitialContext的play.api.libs.JNDI。您可以使用它查找数据源。
使用这个基准测试应用程序作为示例并添加以下操作:
public Application extends Controller {
...
public static Result getDataSource() throws NamingException {
DataSource dataSource = (DataSource) play.api.libs.JNDI.initialContext().lookup("DefaultDS");
return ok(dataSource.toString());
}
}查找绑定到application.conf中的名称application.conf的数据源。
查看您的异常,您似乎正在查找InitialContext,然后在实用程序库中使用java:comp/.../resourceName查找资源。这不会在你的游戏应用程序中很好地发挥(原谅双关语)。我建议您以一种特定的方式查找您的DataSource,如上面的示例所示。
https://stackoverflow.com/questions/26896510
复制相似问题