springlog应用程序的weblogic jndi数据源问题

时间:2015-03-30 10:36:03

标签: spring hibernate weblogic jndi

我在weblogic中创建了一个名为jdbc / myDS的oracle数据源。

Weblogic在mydomain / config / jdbc中创建了一个xml文件,配置可以在weblogic管理控制台中运行。测试连接正常。我的spring上下文文件详细信息是:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/myDS"/>
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <util:map>
            <entry key="hibernate.hbm2ddl.auto" value="update" />
            <entry key="hibernate.show_sql" value="true" />
        </util:map>
    </property>
</bean>

<bean id="myDAO" class ="com.example.MyDAOImpl">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

我的Java类是:

public class MyDAOImpl implements MyDAO{

private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sessionFactory){
    this.sessionFactory = sessionFactory;
}

public SessionFactory getSessionFactory() {
    return sessionFactory;
}

public void persistPerson(Person  person) {
    Session session = getSessionFactory().openSession();

    try {

    session.beginTransaction();

    session.save(person);

    session.getTransaction().commit();

    }catch(HibernateException he) {

        he.printStackTrace();
    } finally {
         session.close();
    } 
}
}
  

激活更改期间发生错误,请参阅日志   细节。       消息图标 - 错误weblogic.application.ModuleException:       消息图标 - 尝试查找&javc.myDS&#39;时出错没有找到子上下文&#39; jdbc&#39;。已解决&#39;&#39 ;;剩下的名字&#39; jdbc / myDS&#39;

1 个答案:

答案 0 :(得分:-1)

以下提供了一个Spring XML配置,用于通过JNDI名称获取数据源并将其注入Springs AnnotationSessionFactoryBean

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/YourJndi"/>
</bean> 


<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="annotatedClasses">
        <list>
            <value>com.java.model.Employee</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>             
        </props>
    </property>
</bean>

此示例已在使用Oracle 11g的Weblogic 10.3.4上成功测试。