Существуют ли другие причины «Службы с отсутствующими / недоступными зависимостями» - PullRequest
0 голосов
/ 27 февраля 2020

Я спрашиваю, потому что я создал простое приложение для развертывания конечной точки 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 {

...