2016-11-17 3 views
1

Согласно этой документации:Как получить доступ к JNDI DataSource с Play Framework

https://www.playframework.com/documentation/2.5.x/JavaDatabase#exposing-the-datasource-through-jndi

я просто нужен другой вход в моем application.conf выставить DataSource в JNDI:

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:play" 
db.default.jndiName=DefaultDS 

Я добавлен "tyrex" % "tyrex" % "1.0.1" в мой libraryDepenencies в build.sbt.

От прочтения нескольких других сообщений об этом, это звучит, как я должен быть в состоянии просто использовать

DataSource ds = (DataSource) play.api.libs.JNDI.initialContext().lookup("DefaultDS"); 

Чтобы принести DataSource из JNDI. Однако, когда я пытаюсь это он выдает следующее исключение:

javax.naming.NameNotFoundException: DefaultDS not found 
    at tyrex.naming.MemoryContext.internalLookup(Unknown Source) 
    at tyrex.naming.MemoryContext.lookup(Unknown Source) 
    at javax.naming.InitialContext.lookup(InitialContext.java:417) 

Основная причина, которую я пытаюсь сделать это так, что кварц может повторно использовать DataSource/ConnectionPool созданный Play вместо определения другого в кварце .properties. Согласно документации:

http://www.quartz-scheduler.org/documentation/quartz-2.x/configuration/ConfigDataSources.html

мне понадобятся следующие две строки в quartz.properties:

org.quartz.jobStore.dataSource = h2 
org.quartz.dataSource.h2.jndiURL = DefaultDS 

Однако Кварц бросает кучу исключений:

java.sql.SQLException: Could not retrieve datasource via JNDI url 'DefaultDS' javax.naming.NameNotFoundException: DefaultDS not found [See nested exception: java.sql.SQLException: Could not retrieve datasource via JNDI url 'DefaultDS' javax.naming.NameNotFoundException: DefaultDS not found] 

Я не уверен, куда идти дальше. Любая помощь будет оценена по достоинству.

Спасибо.

ответ

0

Найдено.

Мне просто нужно было добавить jdbc в мой libraryDependencies в build.sbt. Это создало и выставило DataSource в JNDI.

Смежные вопросы