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! После этого не только пинг прошел успешно, но и связь с базой данных с менеджером сущностей работала нормально.:(