Я разрабатываю некоторые портлеты для Liferay Portal 5.2.3 с пакетом tomcat 6.0.18, используя контейнер Spring IoC.
Мне нужно сопоставить таблицу User_
, используемую в базе данных Liferay, с сущностью с Hibernate, поэтому мне нужно использовать два разных источника данных, чтобы отделить базу данных liferay от базы данных, используемой портлетами.
Мой jdbc.properties
должен содержать все параметры соединения для обеих баз данных: нет проблем для того, который используется портлетами, но у меня возникают проблемы, определяющие, какая база данных использует liferay для хранения своих данных.
Мой вывод таков: у меня должно быть что-то вроде этого:
liferayConnection.url=jdbc:hsqldb:${liferay.home}/data/hsql/lportal
для динамической загрузки URL-адреса базы данных в соответствии со свойствами Liferay, найденными в portal-ext.properties. (Или, лучше, загрузите весь portal-ext.properties
и прочитайте свойства базы данных оттуда).
Проблема в том, что заполнитель не разрешен:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'liferayDataSource' defined in class path resource [WEB-INF/applicationContext.xml]: Could not resolve placeholder 'liferay.home'
Чтобы избежать этой проблемы, я попытался явно загрузить portal-ext.properties
с помощью Spring bean:
<bean id="liferayPropertiesConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="../../portal-ext.properties"/>
но не повезло: liferay.home не разрешен, но других ошибок нет.
Как мне разрешить заполнитель, определенный Liferay? Спасибо