2011-03-22 1 views
4

Tomcat에서 배포 및 실행되는 WAR를 Glassfish에 배포하려고합니다. Glassfish의 초기 오류 메시지는 다음과 같습니다.Tomcat에서 Glassfish로 WAR 파일을 이식 할 수 없습니다. JTA 대 RESOURCE_LOCAL의 오류

com.sun.enterprise.deployment.backend.IASDeploymentException: Deployment Error -- The persistence-context-ref-name [org.nhindirect.config.store.dao.impl.AnchorDaoImpl/entityManager] in module [C:\Sun\AppServer\domains\domain1\applications\j2ee-modules\config-service] resolves to a persistence unit called [config-store] which is of type RESOURCE_LOCAL. Only persistence units with transaction type JTA can be used as a container managed entity manager. Please verify your application.

WAR에는 META-INF 폴더에 persistence.xml이 없습니다. 그러나 WEB-INF \ lib 아래에 자체에 persistence.xml을 포함하는 JAR이 있습니다. 다음의 내용은 다음과 같습니다

그래서 여기
<?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> 

내 질문 : 그것은 글래스 피시에 RESOURCE_LOCAL 구성된 WAR를 실행하거나, 내가 JTA에 대한 WAR을 다시 구성해야 가능하다? version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"

version="2.4"

  • 에 변경

    1. 변경 :

      나는 전쟁의 web.xml을 다음과 같이 변경하여 첫 번째 옵션을 조사했습니다 xmlns="http://java.sun.com/xml/ns/j2ee"

    2. 이러한 변경 후
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    을 변경, 전쟁은 성공적으로하지만, 나는 그것의 WSDL에 액세스 할 수 없습니다 배포 할 듯 글래스 피시 로그에 다음 오류가 발견되었습니다.

    Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' defined in ServletContext resource [/WEB-INF/beans.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/beans.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880) at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:596) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:365) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4655) at org.apache.catalina.core.StandardContext.start(StandardContext.java:5364) at com.sun.enterprise.web.WebModule.start(WebModule.java:345) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:986) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:970) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:704) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1649) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1254) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:182) at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278) at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:1005) at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:992) at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:470) at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182) at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) at com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:231) at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298) at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:966) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:609) at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:653) at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:390) at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:373) at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90) at $Proxy1.invoke(Unknown Source) at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:170) at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:159) at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:538) at java.lang.Thread.run(Thread.java:619) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/beans.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308) at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:270) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:122) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.(PersistenceExceptionTranslationInterceptor.java:78) at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.(PersistenceExceptionTranslationAdvisor.java:70) at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:97) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1326) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) ... 56 more Caused by: java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:236) at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:202) at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:163) at org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements(FileZippedJarVisitor.java:100) at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:139) at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:287) at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:614) at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:360) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:131) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:224) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:291) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) ... 73 more

    위의 오류 메시지 중 일부는 javassist에 대해 불평합니다. 너무 많이 제공 한 경우

    <?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> 
    

    죄송합니다 다음 섹션은 WAR의 pom.xml 파일

    <dependency> 
        <groupId>javassist</groupId> 
        <artifactId>javassist</artifactId> 
        <version>3.12.1.GA</version> 
    </dependency> 
    

    도움이 만약에 있기 때문에이 이상한 것 같다, 여기에 WAR의 beans.xml 환경의 내용은 정보. 나는 JPA를 처음 사용하고 어떤 사람에게 도움이되지 않을지 확신하지 못했습니다.

    미리 감사드립니다. 당신이 용기를 요구하고 (자체 글래스 피시 생성하고 EntityManager를 관리하는이 상황에서

    @PersistanceContext // Requires JTA 
    EntityManager em; 
    

    : 코드에서

  • 답변

    2

    어딘가에 당신은 아마 이런 식으로 뭔가를 보이는 EntityManager 사용하여 코드를 주입하고 글래스 피쉬는 클러스터 가능하며 실제로 실수로 ACID는 아니지만 여러 클러스터 된 서버간에 공유 할 수있는 JTA 트랜잭션을 사용해야하는 실수로 여러 서버에서 트랜잭션을 수행하지 못하도록합니다.

    이 응용 프로그램 용 glassfish 컨테이너를 절대 클러스터링하지 않을 것이라면 RESOURCE_LOCAL 트랜잭션을 안전하게 사용할 수 있지만 Glassfish는 EntityManager을 관리 할 수 ​​없습니다. Glassfish가 EntityManagerFactory을 관리하게 할 수 있습니다.

    @PersistanceUnit // Does NOT require JTA 
    EntityManagerFactory factory; 
    

    RESOURCE_LOCAL 인 지속성 단위에 사용하는 것이 안전합니다. factory.createEntityManager()을 사용하여 공장에서 EntityManager을 요청하면됩니다.

    이제 EntityManager는 컨테이너 관리가 아닌 응용 프로그램 관리입니다. 따라서 Glassfish는 클러스터에서 트랜잭션 격리를 처리한다고 가정합니다.

    관련 문제