EntityManagerFactory имеет значение null во время запуска приложения (Java EE6 с JBoss)

У меня возникают проблемы с развертыванием приложения Java EE 6 на JBoss 6. Процесс запуска работает нормально до тех пор, пока блок сохраняемости не будет привязан к своему имени JNDI. Соединение с БД установлено.

Затем я получаю сообщение об ошибке

2012-01-26 13:29:31,451 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] (HDScanner) Error installing to Create: name=jboss.j2ee:jar=Content_Hub.war,name=AgofResource,service=EJB3 state=Configured: java.lang.IllegalArgumentException: EntityManagerFactory cannot be null

Может ли кто-нибудь дать ключ, что может вызвать эту ошибку?

Обновление:

Вот мой файл persistence.xml:

<persistence-unit name="cmsPU" transaction-type="JTA">
  <jta-data-source>java:/tteamdb</jta-data-source>
  <class>xxxx.entity.AgofEntry</class>
  <exclude-unlisted-classes>true</exclude-unlisted-classes>
  <properties>
    <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
    <property name="hibernate.connection.url" value="xxxx" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
    <!-- user/pass for DB , too-->  
  </properties>
</persistence-unit>

Источник данных также настраивается в JBoss.

Я попытался добавить component.xml, но это, похоже, никак не влияет на ошибку:

<components xmlns="http://jboss.com/products/seam/components" xmlns:persistence="http://jboss.com/products/seam/persistence">
  <persistence:entity-manager-factory name="entityManagerFactory" persistence-unit-name="cmsPU" />
  <persistence:managed-persistence-context name="em" auto-create="true" entity-manager-factory="#{entityManagerFactory}" />
</components>

На самом деле я нигде не использую EntityManagerFactory. Просто обычный EntityManager вроде этого:

@PersistenceContext(unitName = "cmsPU")
private EntityManager em;

person Jan Algermissen    schedule 26.01.2012    source источник
comment
Можете ли вы показать какой-нибудь код, куда вы вводите свой EMF и как он настраивается в persistence.xml?   -  person Piotr Nowicki    schedule 26.01.2012
comment
Просто стреляйте здесь - вы используете имя JNDI DataSource сервера приложений и в то же время вы предоставляете свойства URL-адреса соединения, специфичные для Hibernate. Возможно, это порождает проблему?   -  person Piotr Nowicki    schedule 26.01.2012
comment
Нет, к сожалению нет. Я только добавил свойства соединения в persistence.xml, потому что JBoss почему-то не запоминает логин и пароль настроенного в консоли DS. Я уверен, что просто делаю что-то глупое, но не могу понять что.   -  person Jan Algermissen    schedule 26.01.2012
comment
У меня есть один вопрос: требуется ли файл component.xml или я могу просто удалить этот файл? Я добавил его только во время отладки, чтобы посмотреть, работает ли это.   -  person Jan Algermissen    schedule 26.01.2012
comment
Я не использовал фреймворк Seam, так что если вы его не используете - он не нужен. Однако, если вы используете фреймворк Seam - я понятия не имею, что произойдет, если вы его удалите ;-) Кстати: куда вы вводите свой EntityManager? EJB? Если не вводить - ошибка все равно будет?   -  person Piotr Nowicki    schedule 26.01.2012
comment
Я остаюсь в неведении. Я переместил источник данных в развернутый на сервере файл foo-ds.xml, удалил данные для входа в файл persistence.xml и удалил все инъекции @PersistenceContext. Все та же ошибка. Почему контейнер все равно пытается получить доступ к фабрике диспетчера сущностей при запуске? Что может быть причиной того, что ЭДС будет равно нулю?   -  person Jan Algermissen    schedule 28.01.2012
comment
К настоящему времени я создал игрушечный проект и изолировал ошибку: stackoverflow.com/questions/9042032/   -  person Jan Algermissen    schedule 28.01.2012
comment
Ян, просто для проверки - возникает ли такая же ошибка в JBoss AS7?   -  person Piotr Nowicki    schedule 28.01.2012


Ответы (1)


Проблема возникла только при конкретной установке JBoss. Работал нормально с локальной установкой. Я опубликую комментарий, если я когда-нибудь найду причину ошибки.

person Jan Algermissen    schedule 02.02.2012