Предположим, у меня есть два веб-приложения для развертывания в Tomcat 6, упакованные как, скажем, A.war
и B.war
. Есть ли способ заставить Tomcat при перезапуске:
- нагрузка
B
до A
? или
- загрузить
A
после всего остального? или
- сделать
A
загружаемым только после загрузки B
- то есть сделать B
зависимостью A
?
Это вопросы. Ниже приведен фон, который может быть слишком сложным, но также и очень полезным.
* * Фон тысяча двадцать-один * * тысяча двадцать-дв
Я пытаюсь развернуть некоторые портлеты в Liferay. Эти портлеты представляют собой устаревший код, созданный людьми, которые мало знали о том, как работает Liferay, и приняли, скажем, «удивительные» решения, такие как отображение таблиц сущностей Liferay Service Builder в новые классы. На самом деле это не так уж и много, но тот, кто знает Liferay, может немного лучше понять мою точку зрения.
Эти портлеты отправляются Spring и отображаются в базу данных Hibernate. Чтобы избежать раздражающего требования редактирования context.xml
(что утомительно, подвержено ошибкам, легко забываемо, делает постоянный слой медленным до чертиков и т. Д.), Я предоставил источник данных Liferay в качестве нового компонента ...
<bean id="liferayDataSource"
class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<property name="targetDataSource">
<bean
class="com.liferay.portal.kernel.util.InfrastructureUtil"
factory-method="getDataSource" />
</property>
</bean>
... и использовал этот новый компонент в качестве источника данных фабрики Entity Manager:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="liferayDataSource"/>
<property name="persistenceUnitName" value="liferay-db" />
</bean>
Если у меня запущен Liferay и я развернул свои портлеты, он запускается без проблем, потому что ресурсы Liferay уже доступны. Проблема в том, что при перезапуске Liferay эти портлеты загружаются до запуска приложения Liferay, поэтому класс InfrastructureUtil
даже не загружается. Итак, я хочу отложить загрузку портлетов.
Я заметил, что у каждого приложения есть каталог под $CATALINA_HOME/temp/
, обычно называемый чем-то вроде 0-this-annoying-portlet
, 2-that-weird-portlet
и т. Д. Я считаю, что число в начале определяет порядок, поскольку оно вызывает сортировку приложений по алфавиту , Это правда? Могу ли я установить этот номер?
Конечно, я восприимчив к любому решению, но мне действительно интересно узнать о возможностях определения порядка загрузки приложений в Tomcat.