0

Spring で TopLink を使用しようとしていますが、問題が発生しています。Webサービス(CXF)で使用しています。getTopLinkTemplate() を使用すると、resul が null になります。ここに私の 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");
}

}

したがって、このコードを実行すると、コンソールに「テンプレートが null です」と表示され、変数「t」を使用しようとすると nullPointerException が発生します。

詳細については、TopLink を使用したデータベースへの接続は成功しています。

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

私は非常に多くのことをテストしましたが、まだ立ち往生しています。あなたが私を助けてくれることを願っています。

[編集]

OK、私は本当に初心者です。メソッドを呼び出す前に 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 に答える