我正在尝试将 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");