Первое, что я заметил, это то, что у вас есть 2 <jdbcDriver>
элемента в вашем server.xml - должен использоваться только один, например:
<dataSource id="test" jndiName="jdbc/test" type="javax.sql.DataSource">
<properties databaseName="test" serverName="localhost" portNumber="3306" user="user" password="mypassword" />
<jdbcDriver>
<library id="MySQLLib">
<fileset dir="/Library/JDBC/" includes="mysql-connector-java-5.1.14-bin.jar" />
</library>
</jdbcDriver>
</dataSource>
Далее вы определяете ссылку на ресурскак это:
@Resource(lookup = "java:comp/env/jdbc/test", name="java:comp/env/jdbc/test")
private DataSource dataSource;
Это фактически говорит: "выполнить поиск JNDI для java: comp / env / jdbc / test" и связать его с именем JNDI "java: comp / env / jdbc / test"».Это приведет к бесконечному циклу или циклической ссылке.
Вместо этого вы хотите связать lookup
с jndiName
, который вы определили в вашем server.xml, следующим образом:
@Resource(lookup = "jdbc/test", name="java:comp/env/jdbc/test")
private DataSource dataSource;
Или, если это не сработает, вы можете попробовать выполнить прямой поиск Spring следующим образом:
@Bean
public DataSource dataSource() throws NamingException {
return (DataSource) new JndiTemplate().lookup("java:comp/env/jdbc/test");
}
или с помощью стандартного API Java:
DataSource ds = javax.naming.InitialContext.doLookup("jdbc/test");
Если ни один изэти параметры работают, проверьте журналы сервера на наличие ошибок или предупреждений.Должно быть какое-то указание на то, почему невозможно создать источник данных.
Новое в Liberty 19.0.0.9 - API проверки источника данных
В 19.0.0.9 мы выпустили REST API, которыйможет использоваться для проверки элементов конфигурации, таких как dataSource
s.
Чтобы использовать его с вашей конфигурацией, настройте пользователя-администратора (если вы этого еще не сделали), например:
<quickStartSecurity userName="adminuser" userPassword="adminpwd"/>
А затем в веб-браузере перейдите на https://localhost:9443/ibm/api/validation/dataSource/{DATASOURCE_ID}
, который в вашем случае будет https://localhost:9443/ibm/api/validation/dataSource/test.
Чтобы получить полное описание этой функции проверки, см. это сообщение .