Я не могу развернуть свой проект j2ee на Glassfish ...
Ниже приведено сообщение об ошибке при развертывании этого:
Exception while loading the app : java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring/db.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: amlPU] Unable to build EntityManagerFactory
Я создал свой проект Maven, используя mvn archetype:generate
, и я выбрал фреймворк spring-mvc-jpa
.
Тогда я создаю сущности. Я создаю DAO, Сервисы и соответствующие юнит-тесты. (Юнит-тесты работают!)
У меня есть файл persistence.xml
в каталоге main/resources
и еще один в test/resources
. Первый тип транзакции для JTA
и другие RESOURCE-LOCAL
.
У меня есть два файла пружин в каталоге main/resources
и два файла пружин в каталоге test/resources
.
** main / resources / application-context-jpa.xml:
<context:annotation-config />
<context:component-scan base-package="**.***********.aml" />
<jee:jndi-lookup id="dataSource" jndi-name="*********"/>
<jee:jndi-lookup id="entityManagerFactory" jndi-name="META-INF/persistence/amlPU"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory" />
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
<!-- JPA annotations bean post processor -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<!-- Exception translation bean post processor -->
** main/resources/application-context.xml
содержит компоненты DAO
, "Службы" и "WebService".
- Я также создал тип ресурсов в пуле соединений Glassfish, и я перехожу сюда:
<jee:jndi-lookup id="dataSource" jndi-name="*********"/>
.
По дополнительным вопросам:
Какая версия Glassfish?
Кроме того, как выглядит ваш файл persistence.xml?
<persistence-unit name="amlPU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- JNDI name of the database resource to use -->
<jta-data-source>jdbcAg2rPool</jta-data-source>
<class>**.*****.aml.dom.TScheme</class>
<class>**.*****.aml.dom.TAction</class>
<class>**.*****.aml.dom.TAnnualSalaryRange</class>
<class>**.*****.aml.dom.TAnswer</class>
<class>**.*****.aml.dom.TApprovalInstance</class>
<class>**.*****.aml.dom.TAudit</class>
<class>**.*****.aml.dom.TBroker</class>
<class>**.*****.aml.dom.TCountry</class>
<class>**.*****.aml.dom.TDecisionStatus</class>
<class>**.*****.aml.dom.TDocument</class>
<class>**.*****.aml.dom.TGroup</class>
<class>**.*****.aml.dom.TGroupAction</class>
<class>**.*****.aml.dom.TGroupSchemeType</class>
<class>**.*****.aml.dom.TLinkType</class>
<class>**.*****.aml.dom.TPaymentMode</class>
<class>**.*****.aml.dom.TPerson</class>
<properties>
<!-- The database dialect to use -->
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
<!-- log the generated SQL -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.connection.autocommit" value="true"/>
<property name="hibernate.transaction.flush_before_completion" value="true"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
<property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
</properties>
</persistence-unit>
</persistence>
На какую запись jdbc jndi она указывает?
- jee: jndi-lookup id = "dataSource" jndi-name = "jdbcAg2rPool" />
- jee: jndi-lookup id = "entityManagerFactory" jndi-name = "META-INF / persistence / amlPU" />
У вас есть этот jdbc, настроенный в вашей конфигурации glassfish или в context.xml?
- Для теста: в context.xml
- Остальное в моей стеклянной рыбе