【发布时间】:2014-10-01 17:02:39
【问题描述】:
我正在尝试通过以下方式访问 Tomcat server.xml 和 context.xml 中指定的数据源 玩。 playapplication 位于 tomcat webapps 中的 war 中,并且其 web.xml 中的 Connection 指定为:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/Testconnection</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
为了查看指定的连接,我使用了一个 jsp 来检查配置:
Context initialContext = new InitialContext();
Context componentBindings = (Context) initialContext.lookup("java:comp/env");
DataSource dataSource = (DataSource) componentBindings.lookup("jdbc/Testconnection");
Connection connection = dataSource.getConnection();
String connectionUrl = connection.getMetaData().getURL();
out.println(connectionUrl);
这显示了预期的结果。
当尝试访问 play 应用程序中的数据库时,它总是会导致:
“找不到 .... 的数据源:路径表达式中不允许使用令牌:'-'”指向我的 play 应用中包含 DB.withConnection 的行。
所以让我感到困惑的是,在我的整个代码中没有像“-”这样的标记。
我尝试访问以下组合:
DB.withConnection("java:comp/env/jdbc/Testconnection") { imlicit c => .......}
DB.withConnection("java:jdbc/Testconnection") { imlicit c => .......}
DB.withConnection("jdbc/Testconnection") { imlicit c => .......}
如果有人可以为我提供解决方案或指出正确的方向,那就太好了。
非常感谢!
解决方案:
所以解决方案(感谢 applicius!)可能是:
导入 javax.naming.{Context, InitialContext}
导入 javax.sql.DataSource
[...]
var conn: java.sql.Connection = (new InitialContext).lookup("java:/comp/env").asInstanceOf[Context].lookup("jdbc/Testconnection").asInstanceOf[DataSource].getConnection
val 结果:Option[Result] = SQL(queryName).on(("variable","replaceValue")).singleOpt(Result.rowMapper)(conn)
[...]
【问题讨论】:
-
哪里来的错误
could not find datasource for ....: Token not allowed in path expression: '-'? JSP?你的withConnection测试(顺便说一句/imlicit/implicit)? -
抱歉,我对此不清楚。编辑了我原来的帖子。错误来自播放应用程序本身指向
DB.withConnection行
标签: scala jndi playframework-2.2