Я спрашиваю, потому что я создал простое приложение для развертывания конечной точки Websocket, связи с ним, а затем с помощью API-интерфейса Persistance Java для хранения / извлечения данных, вводимых со страницы browserd HTML в / из базы данных MariaDB [ 'wstestdb'].
--- Проект [WSTest] был построен на рабочей среде Eclipse.
--- ANT упаковал проект в wstest.ear с двумя модулями: wstest.war и wstest.jar. Когда wstest.ear помещается в автономную папку / развертывания Wildfly10, развертывается без ошибок.
После того, как он заработал, я продублировал проект как 'Pct109'.
--- Переименовал файлы развертывания: pct109.ear с двумя модулями: pct109.war и pct109.jar
--- Изменен целевой объект базы данных на стороне сервера с wstestdb на pct109db.
- - Изменено сопротивление. xml для создания модуля сопротивления, нацеленного на pct109db вместо wstestdb. Теперь, когда я внедряю pct109.ear, он завершается неудачно с этой записью в журнале Wildfly:
13:57:47,491 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "Pct109.ear")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.jdbc.pct109db"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.persistenceunit.\"Pct109.ear/Pct109.jar#Pct109DB\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jboss.jdbc.pct109db]",
"jboss.persistenceunit.\"Pct109.ear/Pct109.jar#Pct109DB\" is missing [jboss.naming.context.java.jboss.jdbc.pct109db]"
]
}
И я не могу придумать больше мест, чтобы искать причину.
Вот что я проверил:
--- Восстановление файла персистенции. xml ... но я просто не вижу ничего. Я поместил файлы персистентности. xml из двух пакетов ниже.
--- Учетные данные для новой базы данных в новой персистентности. xml ... но я не вижу ни одного. Я поместил вывод командного окна MariaDB, который подтверждает учетные данные, которые я использовал в обоих файлах. xml.
--- контекст root (но, поскольку он еще не развернут, я сомневаюсь, что это проблема): Мое приложение. xml файлы используют разные контексты.
--- <context-root>/WSTest</context-root>
--- <context-root>/Pct109</context-root>
--- Упущенные ссылки на "wstest". Я искал в обоих файлах все ссылки на "wstest". Убедитесь, что все они были изменены на «pct109», и что все экземпляры, которые использовали заглавные буквы в рабочем приложении, были изменены на pct109 в отказавшем приложении, как и для имен модулей персистентности. [И ошибка Wildfly подтверждает, что он ищет модуль персистентности с именем Pct109DB: до
--- Упаковка: я проверил два файла с ушами и их модули. Они содержат одни и те же файлы из идентичных приложений в абсолютно одинаковом порядке.
Я публикую фрагменты из двух Java классов сущностей, но я не вижу, как это происходит, пока не развернется.
--- Я использовал Project / Clean
И у меня нет идей, где еще искать.
Может кто-нибудь предложить какие-либо другие ошибки кода, которые могли бы вызвать это сообщение об ошибке , Я имею в виду, это ясно говорит, что не может найти новую базу данных. Но я не могу представить себе какой-либо другой код, который мог бы вызвать эту ошибку.
Это убивает меня, поэтому любые предложения приветствуются.
<!--
persistence.xml must be in the META-INF of the JAR that contains
the EJB classes. In this case WSTest.jar
NOT UNDER WSTest.ear's META-FILE
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name ="WSTestDB">
<jta-data-source>java:jboss/jdbc/wstestdb</jta-data-source>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/wstestdb"/>
<property name="javax.persistence.jdbc.user" value="wstestdbUser"/>
<property name="javax.persistence.jdbc.password" value="#Z9!awY3!3#"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
<!--
persistence.xml must be in the META-INF of the JAR that contains
the EJB classes. In this case Pct109.jar
NOT UNDER Pct109.ear's META-FILE
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name ="Pct109DB">
<jta-data-source>java:jboss/jdbc/pct109db</jta-data-source>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/pct109db"/>
<property name="javax.persistence.jdbc.user" value="pct109dbUser"/>
<property name="javax.persistence.jdbc.password" value="#Z7!AwY5!3#"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>
</persistence-unit>
</persistence>
MariaDB [(none)]> show databases;
+---------------------------+
| Database |
+---------------------------+
| #mysql50#Reference Manual |
| gotestdb |
| information_schema |
| mysql |
| pct109db |
| performance_schema |
| wstestdb |
+---------------------------+
7 rows in set (0.00 sec)
MariaDB [(none)]> use mysql;
Database changed
MariaDB [mysql]> SELECT host, user, password FROM user;
+-----------------+--------------+-------------------------------------------+
| host | user | password |
+-----------------+--------------+-------------------------------------------+
| localhost | root | *0860AAA2148F521181C1041B2E59F196FC89AA25 |
| desktop-97irrvh | root | *0860AAA2148F521181C1041B2E59F196FC89AA25 |
| 127.0.0.1 | root | *0860AAA2148F521181C1041B2E59F196FC89AA25 |
| ::1 | root | *0860AAA2148F521181C1041B2E59F196FC89AA25 |
| localhost | gotestdbUser | *8292009C455CF15D9635EE2007CA79FE284F8633 |
| localhost | wstestdbUser | *6B266E8819CC4F27F9552A4081524FB5918D4B4E |
| localhost | pct109dbUser | *4DE904AD0FC4D535C247DB97305A99AA91D42589 |
+-----------------+--------------+-------------------------------------------+
7 rows in set (0.00 sec)
MariaDB [mysql]> use wstestdb;
Database changed
MariaDB [wstestdb]> show tables;
+--------------------+
| Tables_in_wstestdb |
+--------------------+
| members |
| names |
+--------------------+
2 rows in set (0.00 sec)
MariaDB [wstestdb]> use pct109db;
Database changed
MariaDB [pct109db]> show tables;
+--------------------+
| Tables_in_pct109db |
+--------------------+
| members |
| names |
+--------------------+
2 rows in set (0.00 sec)
MariaDB [pct109db]> GRANT ALL PRIVILEGES ON pct109.* TO 'pct109dbUser'@'localhost' Identified by '#Z7!AwY5!3#';
Query OK, 0 rows affected (0.00 sec)
MariaDB [pct109db]> use wstestdb;
Database changed
MariaDB [wstestdb]> GRANT ALL PRIVILEGES ON wstestdb.* TO 'wstestdbUser'@'localhost' Identified by '#Z9!awY3!3#';
Query OK, 0 rows affected (0.00 sec)
MariaDB [wstestdb]>
@NamedQuery(name="Member.findMbrById",
query="SELECT m " +
"FROM Member m " +
"WHERE m.memberId = :memberIdP")
@NamedQuery(name="Member.findMbrById",
query="SELECT m " +
"FROM Member m " +
"WHERE m.memberId = :memberIdP")
@Entity(name="Member")
@Table(name="wstestdb.members")
public class Member extends EntityParent {
@NamedQuery(name="Member.findMbrById",
query="SELECT m " +
"FROM Member m " +
"WHERE m.memberId = :memberIdP")
@Entity(name="Member")
@Table(name="pct109db.members")
public class Member extends EntityParent {