【问题标题】:how do i configure spring 2.5.6 + eclipseLink + weblogic 10.3我如何配置 spring 2.5.6 + eclipseLink + weblogic 10.3
【发布时间】:2012-08-09 20:00:25
【问题描述】:
    <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>

实现

@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;
        }
    }
}

Pero al iniciar la aplicación el log arroja este 错误:

Persistence-ejbPU.jar 范围内没有名为“Persistence-ejbPU”的持久性单元

之前使用的是 persistence.xml 文件,但需要动态的数据源名称

【问题讨论】:

  • 好吧,我在您的配置文件中没有看到标识为Persistence-ejbPU 的bean。 (另外,不要在你的问题中混合西班牙语和英语)

标签: spring persistence eclipselink weblogic-10.x


【解决方案1】:

只需将 ref 替换为 value。使用:

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

代替:

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

如果您仍然有问题,那么我将实现我自己的 LocalContainerEntityManagerFactoryBean 类,该类从 AbstractEntityManagerFactoryBean 扩展,以便您可以覆盖 setPersistenceUnitName 然后看看发生了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2018-09-29
    相关资源
    最近更新 更多