Я пишу тестовый пример JUnit, где процесс, пытающийся получить источник данных, получает следующее сообщение об ошибке.
Трассировка стека:
java.lang.NullPointerException
at play.api.db.DB$.getDataSource(DB.scala:141)
at play.api.db.DB.getDataSource(DB.scala)
at play.db.DB.getDataSource(DB.java:22)
at dao.BaseDao.getJdbcTemplate(BaseDao.java:13)
Здесь я использую spring jdbctemplate, play framework и JUnit. Пожалуйста, найдите следующие файлы ресурсов, которые я использую.
application.conf
db.default.jndiName=DefaultDS
db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url="jdbc:oracle:thin:@//xx.xx.xx.xx:1521/XE"
db.default.user=work
db.default.pass=work
......
components.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:context="https://www.springframework.org/schema/context"
xmlns:jee="https://www.springframework.org/schema/jee"
xsi:schemaLocation="https://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
https://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context-3.0.xsd
https://www.springframework.org/schema/jee https://www.springframework.org/schema/jee/spring-jee-3.0.xsd">
<context:component-scan
base-package="controllers,services,dao,org.springframework.jndi" />
</beans>
BaseDao.java
package dao;
import org.springframework.jdbc.core.JdbcTemplate;
import play.db.DB;
public class BaseDao {
private JdbcTemplate jdbcTemplate;
public JdbcTemplate getJdbcTemplate() {
if (jdbcTemplate == null) {
this.jdbcTemplate = new JdbcTemplate(DB.getDataSource("default"));
}
return this.jdbcTemplate;
}
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
PublishedReferenceYieldServiceImplTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:components.xml")
public class PublishedReferenceYieldServiceImplTest {
//Here I am accessing baseDAO
...
}