Java 使用远程JNDI数据源的Spring+Hibernate事务管理

Java 使用远程JNDI数据源的Spring+Hibernate事务管理,java,hibernate,weblogic,jta,spring-transactions,Java,Hibernate,Weblogic,Jta,Spring Transactions,我有一个Spring应用程序,它使用hibernate、Spring事务管理和位于Weblogic服务器上的JNDI数据源 应用程序在weblogic上部署时工作正常,但在本地作为没有容器的独立java应用程序运行时,会引发以下错误- org.hibernate.service.jndi.JndiException:解析jndi名称时出错 [javax.transaction.TransactionManager] javax.naming.NoInitialContextException:需

我有一个Spring应用程序,它使用hibernate、Spring事务管理和位于Weblogic服务器上的JNDI数据源

应用程序在weblogic上部署时工作正常,但在本地作为没有容器的独立java应用程序运行时,会引发以下错误-

org.hibernate.service.jndi.JndiException:解析jndi名称时出错 [javax.transaction.TransactionManager] javax.naming.NoInitialContextException:需要在中指定类名 环境或系统属性

以下是我在设置中使用的事务管理器、数据源和hibernate配置:

<bean id="transactionManager" class="org.springframework.transaction.jta.WebLogicJtaTransactionManager"></bean>

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/mydatasource"/>
    <property name="jndiEnvironment" ref="weblogicJndiEnv"></property>
</bean>

<util:properties id="weblogicJndiEnv">
    <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
    <prop key="java.naming.security.principal">weblogic</prop>
    <prop key="java.naming.security.credentials">weblogic</prop>
    <prop key="java.naming.provider.url">t3://#{ systemProperties['listenurl'] }</prop>
</util:properties>

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="jtaTransactionManager" ref="transactionManager"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.current_session_context_class">jta</prop>  
            <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</prop>  
            <prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform</prop>
            <prop key="hibernate.connection.release_mode">auto</prop>  
            <prop key="hibernate.transaction.auto_close_session">true</prop>
        </props>
    </property>
    <property name="packagesToScan" value="abc.xyz" />
</bean>

上述配置中是否缺少任何内容?

您是否在本地计算机上配置了相同的数据源?否,该数据源位于远程weblogic服务器上注意:我正在本地作为容器外的独立java应用程序运行它