0

我正在尝试将 TopLink 与 Spring 一起使用,但我遇到了问题。我在网络服务(CXF)中使用它。当我使用 getTopLinkTemplate() 时,结果为空。这是我的 applicationContext.xml :

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
    <property name="url" value="jdbc:oracle:thin:@*************" />
    <property name="username" value="*****" />
    <property name="password" value="*****" />
</bean>

<bean id="mySessionFactory"
    class="org.springframework.orm.toplink.LocalSessionFactoryBean">
    <property name="configLocation" value="toplink-sessions.xml" />
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="myProductDao" class="ToplinkExecPS.ExecPS">
    <property name="sessionFactory">
        <ref local="mySessionFactory" />
    </property>
</bean>

我的代码是:

public class ExecPS extends TopLinkDaoSupport{

public Vector Exec(String test) 
{
    TopLinkTemplate t;
    t = getTopLinkTemplate();
    if (t == null)
        System.out.println("template is null");
}

}

因此,当我执行此代码时,控制台中出现“模板为空”,而当我尝试使用变量“t”时出现 nullPointerException。

有关信息,使用 TopLink 连接到数据库是成功的。

[TopLink - Infos] : 2012.05.23 03:45:22.113--ServerSession(4812898)--Thread(Thread[main,5,main])--Session - connexion réussie

我已经测试了很多东西,但我仍然卡住了。我希望你能帮助我。

[编辑]

好吧,我真的是个菜鸟。我只是忘记在调用该方法之前获取我的 bean ......如果有人进入这个线程,有代码:

ClassPathXmlApplicationContext context = 
            new ClassPathXmlApplicationContext(new String[]{"ToplinkContext.xml"} );
    ExecPS exec = (ExecPS)context.getBean("myProductDao");
4

1 回答 1

0

这不是 100%,但我会怀疑这条线:

<property name="configLocation" value="toplink-sessions.xml" />

不确定 toplink-sessions.xml 是否在您的类路径中并尝试以下操作:

    <property name="configLocation" value="classpath:toplink-sessions.xml" />
于 2012-05-23T22:17:22.653 回答