2012-08-09 67 views
0
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="placeholderPrefix" value="${" /> 
    <property name="placeholderSuffix" value="}" /> 
    <property name="locations"> 
     <value>classpath:ddes/config.properties</value> 
    </property> 
</bean> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="${datasource}"/> 
    <property name="resourceRef" value="true"/> 
</bean> 

<context:load-time-weaver weaver-class="org.springframework.instrument.classloading.weblogic.WebLogicLoadTimeWeaver"/> 

<bean id="PersistenceUnit" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> 
    <property name="defaultDataSource" ref="dataSource"/> 
    <property name="class"> 
    <!--LIST BEANS--> 
     <value>....</value> 
    </property> 
</bean> 

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"> 
    <property name="databasePlatform" value="org.eclipse.persistence.platform.database.OraclePlatform"/> 
    <property name="generateDdl" value="true"/> 
    <property name="showSql" value="true"/> 
</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <property name="persistenceUnitManager" ref="PersistenceUnit"/> 
    <property name="persistenceUnitName" ref="Persistence-ejbPU"/> 
    <property name="persistenceProvider" ref="org.eclipse.persistence.jpa.PersistenceProvider"/> 
</bean> 

<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManager" ref="entityManagerFactory"/> 
</bean> 

實施我該如何配置春天2.5.6 +的EclipseLink + weblogic的10.3

@CallByReference 
@Stateless(mappedName = "cliente") 
public class ClienteDAOBean implements ClienteDAOLocal, ClienteDAORemote { 


    @PersistenceUnit(unitName = "Persistence-ejbPU") 
    private EntityManagerFactory emf; 

    public Clientes find(Integer codCliente) throws Exception { 
     Clientes cliente = null; 
     EntityManager em = emf.createEntityManager(); 
     try { 
      javax.persistence.Query q = em.createNamedQuery("Clientes.findByCodCliente").setParameter("codCliente", codCliente); 
      cliente = (Clientes) q.getSingleResult(); 
     } catch (Exception e) { 
      throw e; 
     } finally { 
      em.close(); 
      return cliente; 
     } 
    } 
} 

佩羅人iniciar拉aplicaciónEL登錄arroja埃斯特錯誤:

沒有名爲「持久單元Persistence- ejbPU'可用範圍Persistence-ejbPU.jar

以前使用的是persistence.xml文件,但需要數據源的名稱o ut動態

+1

嗯,我的配置文件中沒有看到標識爲「Persistence-ejbPU」的bean。 (另外,不要在你的問題中混合西班牙文和英文) – madth3 2012-08-09 20:06:16

回答

1

只需將值替換爲ref即可。用途:用於

<property name="persistenceUnitName" value="Persistence-ejbPU" /> 

代替:

<property name="persistenceUnitName" ref="Persistence-ejbPU"/> 

如果您有還是問題,那麼我會實現我自己的LocalContainerEntityManagerFactoryBean類從AbstractEntityManagerFactoryBean延伸,從而可以覆蓋setPersistenceUnitName然後看看是什麼繼續。