JPA2 в свободе 18.0.0.3 с использованием базы данных MySQL - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в JPA и Liberty. Может ли кто-нибудь объяснить, как связать / связать конфигурацию server.xml, web.xml и persistence.xml для настройки соединения с базой данных? Ваша помощь в этом очень ценится.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Эта тема IBM KnowledgeCenter - хорошее место для начала

0 голосов
/ 26 октября 2018

В Liberty вы определяете расположение файлов jar драйвера JDBC и настраиваете элемент dataSource с именем JNDI. Эта страница центра знаний содержит пример для MySQL,

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_dep_configuring_ds.html

Прямое цитирование со страницы выше,

<dataSource id="DefaultDataSource" jndiName="jdbc/mySQL">
<jdbcDriver libraryRef="MySQLLib"/>
    <properties databaseName="SAMPLEDB" serverName="localhost" portNumber="3306"/>
</dataSource>

<library id="MySQLLib">
    <file name="C:/mysql-connector-java-x.x.xx/mysql-connector-java-x.x.xx.jar"/>
</library>

После этого вы можете настроить элемент jta-data-source в вашем файле persistence.xml, указывая на выбранное вами имя JNDI. Например,

...
<persistence-unit name="ExamplePersistenceUnit">
  <jta-data-source>jdbc/mySQL</jta-data-source>
</persistence-unit>

Вышеприведенного достаточно, чтобы заставить его работать, без использования web.xml. Дескриптор развертывания (web.xml) дает вам возможность добавить уровень косвенности / сопоставления и возможность настроить некоторые дополнительные параметры, такие как совместное использование и проверка подлинности приложения и контейнера. Вы можете сделать это, определив ссылку на ресурс в web.xml, указывающую на источник данных. Ссылки на ресурсы имеют имена в java: comp / env, java: module / env, java: app / env или java: global / env, которые отражают их видимость. Я буду использовать java: module в следующем примере, это означает, что определяемая нами ссылка является видимостью только в том же модуле (веб-модуле, который предоставляет web.xml),

<resource-ref>
  <res-ref-name>java:module/env/jdbc/mySQLRef</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
  <lookup-name>jdbc/mySQL</lookup-name>
</resource-ref>

После определения ссылки на ресурс выше источник данных продолжает оставаться доступным по имени JNDI, указанному в server.xml, но также становится доступным через имя JNDI ссылки на ресурс, что означает, что вы можете поочередно указать

  <jta-data-source>java:module/env/jdbc/mySQLRef</jta-data-source>

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

...