Я пытаюсь использовать 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");
}
}
Итак, когда я выполняю этот код, у меня в консоли "template is null" и исключение nullPointerException, когда я пытаюсь использовать переменную "t".
К сведению, подключение к базе данных с помощью TopLink прошло успешно.
[TopLink - Infos] : 2012.05.23 03:45:22.113 --ServerSession(4812898) --Thread(Thread[main,5,main]) --Session - повторное подключение
Я тестирую так много вещей, и я все еще застрял. Надеюсь, вы мне поможете.
[РЕДАКТИРОВАТЬ]
Хорошо, я действительно нуб. Я просто забыл получить свой компонент перед вызовом метода... Если кто-нибудь попадет в этот поток, есть код:
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext(new String[]{"ToplinkContext.xml"} );
ExecPS exec = (ExecPS)context.getBean("myProductDao");