2012-12-16 16 views
6

Wie kann ich Glasfische konfigurieren, um anwendungsverwaltete Entitätsmanager zu verwenden? Ich bekomme den folgenden Fehler mit der unten angegebenen Konfiguration.Wie kann ich Glasfische konfigurieren, um anwendungsverwaltete Entitätsmanager zu verwenden?

ich nicht Glassfish wollen Transaktionen verwalten, ich möchte nur verwenden Frühjahr gesteuerten Transaktionen mit RESOURCE_LOCAL Einstellung, nicht JTA, in der Persistenzeinheit

SEVERE: Exception while preparing the app : The persistence-context-ref-name [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean/entityManager] .... resolves to a persistence unit called [spring-jpa] 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. 

Mein cofiguration:

<persistence version="1.0" 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"> 
    <persistence-unit name="spring-jpa" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <non-jta-data-source>mysql/mydb</non-jta-data-source> 
    <properties/> 
    </persistence-unit> 
</persistence> 

Meine Anwendungskontext:

<?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:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:jpa="http://www.springframework.org/schema/data/jpa" 
    xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> 

    <context:component-scan base-package="com.myproject"/> 
    <jpa:repositories base-package="com.myproject"/> 
    <tx:annotation-driven transaction-manager="transactionManager"/> 
    <bean id="dataSource" 
     //.... 
    </bean>  
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="persistenceUnitName" value="spring-jpa" /> 
     <property name="jpaVendorAdapter"> 
      <!-- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">--> 
       <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
       <property name="showSql" value="true" /> 
       <property name="generateDdl" value="true" /> 
       <property name="database" value="MYSQL" /> 
       <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/> 
      </bean> 
     </property> 
    </bean> 


<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

</beans> 

Antwort

2

Ich fand this forum post, ich zitiere :

In einer Java EE-Umgebung, wenn dieses Element [Transaktionstyp] nicht spezi fi zierten ist, ist die Standard-JTA. Wenn dieses Element in einer Java SE-Umgebung nicht angegeben ist, kann ein Standardwert von RESOURCE_LOCAL angenommen werden.

Also, in Ihrer Konfiguration try:

<persistence-unit name="spring-jpa" transaction-type="JTA"> 
Verwandte Themen