在下面的场景中获取异常(找不到密钥类的描述符/否[EntityType])

时间:2015-03-30 06:32:59

标签: jpa spring-data-jpa weblogic eclipselink jta

在下面的场景中获取异常(找不到密钥类的描述符/否[EntityType])。

  1. 启动weblogic服务器
  2. 部署WAR
  3. 测试应用程序'n'次
  4. 从Web逻辑管理控制台
  5. 删除WAR
  6. 重新部署相同的WAR
  7. 基本上,如果我们进行重新部署,我们将获得上述异常。如果重新启动服务器,将解决此问题。

    的persistence.xml

        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    
        <jta-data-source>DEV</jta-data-source>
    
        <class>com.Class1</class>
        <properties>
            <property name="hibernate.show_sql" value="true"/>
            <property name="eclipselink.allow-zero-id" value="true"/>
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.parameters" value="true" />
            <property name="eclipselink.target-server" value="WebLogic"/>
            <property name="javax.persistence.query.timeout" value="120000"/>
            <property name="javax.persistence.lock.timeout" value="120000"/>
        </properties>
    </persistence-unit>
    

    用于处理spring事务的Bean配置

       <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">    
              <property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"/>
              <property name="persistenceUnitManager" ref="persistenceUnitManager" />              
       </bean>
    
       <bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
        <property name="persistenceXmlLocations">
              <list>
              <value>classpath*:META-INF/persistence.xml</value>
            </list>
        </property>
       <property name="loadTimeWeaver" ref="loadTimeWeaver"/>
     </bean>
    
    <bean id="loadTimeWeaver" class="org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver"/>
    
       <bean id="em" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
       <property name="entityManagerFactory" ref="entityManagerFactory"/>
       </bean>
    

1 个答案:

答案 0 :(得分:0)

由于ServerSession而导致错误的WL服务器被缓存在EntityManagerSetupImpl静态中,因此在createEntityManagerFactory()中,旧的描述符/类在重新部署之前使用。

**

  

我们设法获取了EntityManagerFactory对象并关闭了它   在其中一个InitializerServlet的destroy方法中。

**