Glassfish v4 Transaction Manager не найден

При повторном развертывании приложения с IntelliJ на Glassfish v4 возникает следующее исключение:

[2013-09-11T12:55:44.122+0300] [glassfish 4.0] [SEVERE] [] [javax.enterprise.system.core] [[
  Exception while deploying the app [gtwcustreporter_war_exploded] : Exception [EclipseLink-23004] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error obtaining the Transaction Manager
Internal Exception: Exception [EclipseLink-23001] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error looking up external Transaction resource under JNDI name [java:appserver/TransactionManager]
Internal Exception: javax.naming.NameNotFoundException: remaining name: /appserver/TransactionManager]]

Однако перезапуск всего сервера и развертывание приложения работают нормально. Только повторное развертывание не удается.

Я предполагаю, что в дескрипторах приложения чего-то не хватает, но я не могу найти свою ошибку.

Я определил БД (MySQL) в пуле базы данных JDBC Glassfish и ресурсе JDBC (и я могу читать и писать в него, когда диспетчер транзакций не дает сбой)

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

<persistence-unit name="GTWunit" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/gtwcust</jta-data-source>
    <class>net.metarex.ga.jpa.LocationCode</class>
    <class>net.metarex.ga.jpa.Shipment</class>
</persistence-unit>

В артефактах я добавил LIB Glassfish, как указано, и Java-EE 6 в качестве зависимости компиляции.

Есть идеи, что может быть основной причиной?


person user1927033    schedule 11.09.2013    source источник


Ответы (1)


Вы пробовали выполнить развертывание в GlassFish напрямую? Ошибка повторного развертывания и за пределами InteilliJ?

Любая конкретная причина, по которой вы явно включаете классы Entity в свой persistence.xml.

То же самое и с поставщиком постоянства.

Почему вы добавили LIB GlassFish, как указано. Этого не должно требоваться даже для стандартного приложения Java EE 6.

person Arun Gupta    schedule 20.09.2013
comment
После этого поста я довольно много почистил: в файле persistence.xml нет провайдера и классов, а также удалена библиотека Java-EE6 (так как у меня есть несколько вещей, таких как multi-catch и string switch). Развертывание завершается ошибкой и за пределами IntelliJ - как с помощью служебной программы администратора, так и с помощью команды asadmin. Однако после ночи сна я думаю, что обнаружил проблему: проблема пути к классам из api, которую нужно использовать моему приложению. Мне интересно, могу ли я каким-то образом изолировать одну банку, чтобы использовать ее только в другой банке, а не в целом сервер. - person user1927033; 22.09.2013
comment
Переключатель multi-catch и string - это JDK 7, их можно использовать независимо от версии Java EE. Похоже, OSGi может работать в вашем случае, нужно знать больше. - person Arun Gupta; 23.09.2013
comment
Никогда ничего не делал в OSGI. В основном это так: API находится в двух банках (которые зависят друг от друга), которые должны быть в моем проекте. Однако API был написан для сервера Weblogic, поэтому мне нужно включить огромный (50 МБ) файл weblogic.jar в GF (в настоящее время в разделе glassfish / glassfish / lib). Судя по всему, это половина сервера веб-логики, поэтому иногда мое приложение пытается найти на нем диспетчер транзакций контейнера, а не в GF .. - person user1927033; 23.09.2013