Я пытаюсь взять WAR, который развертывается и отлично работает на Tomcat, и развернуть его на Glassfish. Исходное сообщение об ошибке в Glassfish:
com.sun.enterprise.deployment.backend.IASDeploymentException:
Ошибка развертывания -
настойчивость, контекстно-реф-имя
[Org.nhindirect.config.store.dao.impl.AnchorDaoImpl / EntityManager]
в модуле
[C: \ Sun \ AppServer \ домены \ domain1 \ приложения \ j2ee-модули \ конфиг-служба]
разрешается в единицу постоянства называется
[config-store], который имеет тип
RESOURCE_LOCAL. Только персистентные единицы
с типом транзакции можно использовать JTA
в качестве менеджера управляемого объекта контейнера.
Пожалуйста, подтвердите вашу заявку.
У WAR-файла нет файла persistence.xml в папке META-INF. Однако в WEB-INF \ lib есть JAR, который сам содержит файл persistence.xml. Вот его содержание:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="config-store" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>
</persistence-unit>
</persistence>
Итак, вот мой вопрос: возможно ли запустить WAR-файл, настроенный для RESOURCE_LOCAL на Glassfish, или я должен перенастроить WAR-файл для JTA?
Я исследовал первый вариант, внеся следующие изменения в WAR-файл web.xml:
- Изменено
version="2.5"
на version="2.4"
- Изменено
xmlns="http://java.sun.com/xml/ns/javaee"
до
xmlns="http://java.sun.com/xml/ns/j2ee"
- Изменено
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
до
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
После этих изменений WAR, казалось, успешно развернулся, однако я не смог получить доступ к его WSDL, и в журнале Glassfish была обнаружена следующая ошибка:
Инициализирован контекст отправки исключения
событие для слушателя экземпляра класса
org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException:
Ошибка создания бина с именем
'Org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor # 0'
определено в ресурсе ServletContext
[/WEB-INF/beans.xml]: инициализация
бобов не удалось; вложенное исключение
org.springframework.beans.factory.BeanCreationException:
Ошибка создания бина с именем
'entityManagerFactory', определенный в
ServletContext ресурс
[/WEB-INF/beans.xml]: вызов
сбой метода init; вложенное исключение
является java.lang.NoClassDefFoundError:
javassist / bytecode / ClassFile at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:480)
в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run (AbstractAutowireCapableBeanFactory.java:409)
в
java.security.AccessController.doPrivileged (Native
Метод) в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380)
в
org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:264)
в
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222)
в
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261)
в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185)
в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164)
в
org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplicationContext.java:880)
в
org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors (AbstractApplicationContext.java:596)
в
org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:365)
в
org.springframework.web.context.ContextLoader.createWebApplicationContext (ContextLoader.java:255)
в
org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:199)
вorg.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:45) в org.apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4655) в org.apache.teartinaStandardContext.java:5364) в com.sun.enterprise.web.WebModule.start (WebModule.java:345) в org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:986) в org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:970) по адресу org.apache.catalina.core.StandardHost.addChild (StandardHost.java:704) по адресу com.sun.enterprise.web.WebContainer.loadWebModule (WebContainer.java).) на com.sun.enterprise.web.WebContainer.loadWebModule (WebContainer.java:1254) на com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed (WebModuleDeployEventListener.java:182) на com.sun.er.vent.ventEvent.Wevent.moduleDeployed (WebModuleDeployEventListener.java:278) в com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener (AdminEventMulticaster.java:1005) по адресу com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent (AdminEventMulticaster.java:992) по адресу com.sun.enterprise.admin.event.AdminEventMasteric ()на com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent (AdminEventMulticaster.java:182) на com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent (DeploymentNotificationHelper.java:308pr) на com.sun.enter..deployment.(ApplicationStartPhase.java:132) в com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase (DeploymentPhase.java:108) в com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases (PEDeploymentService.java:966) на com.sun.enterprise.deployment.phasing.PEDeploymentService.start (PEDeploymentService.java:609) на com.sun.enterprise.deployment.phasing.PEDeploymentService.start (PEDeploymentService.java:653) в com.sun.enterprise.admin..DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в com.sun.enterprise.admin.MBeanHelper.invokeOperationIneeBean (Bean)sun.DefaultMBeanServerInterceptor.java:836) на com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer.java:761) в sun.reflect.GeneratedMethodAccessor13.invoke (Неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:lan.hore.j.ref.Java: 597) на com.sun.enterprise.admin.util.proxy.ProxyClass.invoke (ProxyClass.java:90) на $ Proxy1.invoke (неизвестный источник) на com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke (SunoneInterceptor.java:304) в com.sun.enterprise.interceptor.DynamicInterceptor.invoke (DynamicInterceptor.java:170) в com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication:9) на com.sun.enterprise.deployment.client.DeployAction.run (DeployAction.java:538) на java.lang.Thread.run (Thread.java:619). Причина:org.springframework.beans.factory.BeanCreationException:
Ошибка создания бина с именем
'entityManagerFactory', определенный в
ServletContext ресурс
[/WEB-INF/beans.xml]: вызов
сбой метода init; вложенное исключение
является java.lang.NoClassDefFoundError:
javassist / bytecode / ClassFile at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1338)
в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:473)
в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run (AbstractAutowireCapableBeanFactory.java:409)
в
java.security.AccessController.doPrivileged (Native
Метод) в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380)
в
org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:264)
в
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222)
в
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261)
в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185)
в
org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164)
в
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType (DefaultListableBeanFactory.java:308)
в
org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors (BeanFactoryUtils.java:270)
в
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators (PersistenceExceptionTranslationInterceptor.java:122)
в
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor. (PersistenceExceptionTranslationInterceptor.java:78)
в
org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor. (PersistenceExceptionTranslationAdvisor.java:70)
в
org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory (PersistenceExceptionTranslationPostProcessor.java:97)
в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1326)
в
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:473)
... еще 56 причин:
java.lang.NoClassDefFoundError:
javassist / bytecode / ClassFile at
org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching (AbstractJarVisitor.java:236)
в
org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter (AbstractJarVisitor.java:202)
в
org.hibernate.ejb.packaging.AbstractJarVisitor.addElement (AbstractJarVisitor.java:163)
в
org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements (FileZippedJarVisitor.java:100)
в
org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries (AbstractJarVisitor.java:139)
в
org.hibernate.ejb.Ejb3Configuration.addScannedEntries (Ejb3Configuration.java:287)
в
org.hibernate.ejb.Ejb3Configuration.scanForClasses (Ejb3Configuration.java:614)
в
org.hibernate.ejb.Ejb3Configuration.configure (Ejb3Configuration.java:360)
в
org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory (HibernatePersistence.java:131)
в
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:224)
в
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:291)
вorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1369) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1335) ... 73 * более 1055
Часть вышеуказанного сообщения об ошибке жалуется на javassist.Это кажется странным, потому что следующий раздел находится в файле WAR pom.xml
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
Если полезно, вот содержимое файла bean.xml WAR:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
default-autowire="byName">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<context:annotation-config />
<context:component-scan base-package="org.nhindirect.config" />
<tx:annotation-driven transaction-manager="transactionManager" />
<jaxws:endpoint id="configurationService"
address="/ConfigurationService" >
<jaxws:implementor>
<bean id="configurationServiceImpl"
class="org.nhindirect.config.service.impl.ConfigurationServiceImpl">
<property name="domainSvc" ref="domainSvc"/>
<property name="addressSvc" ref="addressSvc"/>
<property name="anchorSvc" ref="anchorSvc"/>
<property name="certSvc" ref="certSvc"/>
<property name="settingSvc" ref="settingSvc"/>
<property name="DNSSvc" ref="dnsSvc"/>
</bean>
</jaxws:implementor>
</jaxws:endpoint>
<!-- <jaxws:endpoint id="addressService" implementor="org.nhindirect.config.service.ws.AddressServiceWS"
address="/AddressService" /> -->
<!-- Service Implementations -->
<bean id="domainSvc" class="org.nhindirect.config.service.impl.DomainServiceImpl">
<property name="dao" ref="domainDao"/>
</bean>
<bean id="addressSvc" class="org.nhindirect.config.service.impl.AddressServiceImpl">
<property name="dao" ref="addressDao"/>
</bean>
<bean id="anchorSvc" class="org.nhindirect.config.service.impl.AnchorServiceImpl">
<property name="dao" ref="anchorDao"/>
</bean>
<bean id="certSvc" class="org.nhindirect.config.service.impl.CertificateServiceImpl">
<property name="dao" ref="certificateDao"/>
</bean>
<bean id="settingSvc" class="org.nhindirect.config.service.impl.SettingServiceImpl">
<property name="dao" ref="settingDao"/>
</bean>
<bean id="dnsSvc" class="org.nhindirect.config.service.impl.DNSServiceImpl">
<property name="dao" ref="dnsDao"/>
</bean>
<!-- DAO's -->
<bean id="domainDao" class="org.nhindirect.config.store.dao.impl.DomainDaoImpl"/>
<bean id="addressDao" class="org.nhindirect.config.store.dao.impl.AddressDaoImpl"/>
<bean id="anchorDao" class="org.nhindirect.config.store.dao.impl.AnchorDaoImpl" />
<bean id="certificateDao" class="org.nhindirect.config.store.dao.impl.CertificateDaoImpl"/>
<bean id="settingDao" class="org.nhindirect.config.store.dao.impl.SettingDaoImpl"/>
<bean id="dnsDao" class="org.nhindirect.config.store.dao.impl.DNSDaoImpl"/>
<!-- Exception translation bean post processor -->
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<!-- SWAP THIS JPA IMPLEMENTATION WITH THE APPROPROATE DB CONFIGURATION
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
</bean>
</property>
<property name="persistenceUnitName" value="config-store" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql:nhindconfig" />
<property name="username" value="nhind" />
<property name="password" value="nhind" />
</bean>
-->
<!-- EMBEDDED DERBY JPA CONFIGURATION FOR A WORKING OUT OF THE BOX CONFIGURATION WITH NO PREREQUISITES OF
SETTING UP AN EXTERNAL DATABASE. REMOVE THIS SECTION AND REPLACE WITH READ JPA CONFIGURATION (SEE
ABOVE SECTION) FOR PRODUCTION -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<!-- <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> -->
<property name="databasePlatform" value="org.hibernate.dialect.DerbyDialect" />
</bean>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="config-store" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="url" value="jdbc:derby:nhindconfig;create=true" />
<property name="username" value="nhind" />
<property name="password" value="nhind" />
</bean>
<!-- END DERBY JPA CONFIGURATION -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" />
</beans>
Извините, если я 'мы предоставили слишком много информации.Я новичок в JPA и не был уверен, что будет и не будет полезно никому.
Заранее спасибо.