EntityManager в SSB нулевой

Я пытаюсь обновить небольшую альфа-версию корпоративного приложения, изначально написанного на Java6. Теперь я хочу использовать:

  • Java 7
  • JSF последний
  • специалист
  • EJB 3.2 со стеклянной рыбой

Пока что я могу без проблем развернуть свой EAR-файл на Glassfish. Мое веб-приложение может быть загружено, первые страницы JSF перемещаются нормально. И мой поддерживающий bean-компонент JSF, похоже, также прекрасно загружает мои сессионные bean-компоненты без сохранения состояния. Отладка показала мне, что я могу переходить от одного SSB к другому с помощью моего бина. Последний и последний шаг, который я пропускаю, - это мой менеджер сущностей и настойчивость.

Мой класс помечен с @Stateless и я использую:

@PersistenceContext(unitName = "myProjectPU")
    protected EntityManager entityManager;

Но менеджер сущностей является нулевым:(

Мой файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
  xmlns="http://xmlns.jcp.org/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
  http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="myProjectPU" transaction-type="JTA">
  <jta-data-source>jdbc/myProject</jta-data-source>
    <properties>
      <property name="javax.persistence.schema-generation.create-database-schemas" value="true" />
    </properties>
    </persistence-unit>
  </persistence>

Есть идеи? Должен ли файл persistence.xml находиться внутри модуля ear maven? Прямо сейчас он находится в модуле ejb maven, где находятся мои классы, которые используют менеджер сущностей.

1 ответ

Решение

Ну наконец-то я нашел проблему. Прокрутка в журналах glassfish показала, что исключение nullpointer следовало за более ранним исключением, в котором говорилось "База данных не выбрана". Проблема была не в коде, а в подключении JDBC Glassfish, которое я сделал. Мой пинг работал нормально, и я думал, что связь была в порядке. Но вам не нужно только добавить порт mysql и имя пользователя и пароль. Вы также ДОЛЖНЫ изменить URL-адрес по умолчанию и добавить (дополнительные свойства в пуле соединений) следующее значение:

JDBC: MySQL:// локальный:3306/yourdatabase

до того, как он был по умолчанию: jdbc:mysql://:3306/

Также позаботьтесь о том, чтобы было два параметра: URL и URL! После этого не только пинг прошел успешно, но и связь с базой данных с менеджером сущностей работала нормально.:(

Другие вопросы по тегам