java-如何在Tomcat中定义上下文加载的顺序,或在上下文之间定义一些依赖关系层次结构?
作者:互联网
假设我有两个要在Tomcat 6中部署的Web应用程序,可以说是A.war和B.war.有没有一种方法可以在重新启动时强制Tomcat:
>在A之前加载B?要么
>在其他所有内容之后都加载A?要么
>使A仅在B加载后才可加载-即,使B成为A的依赖项?
这些是问题.下面是一个可能太复杂但也非常有用的背景.
背景
我正在尝试在Liferay中部署一些portlet.这些portlet是由对Liferay的工作原理不甚了解的人制作的遗留代码,可以说是“令人惊奇的”决策,例如将Liferay Service Builder实体表映射到新类.实际上,这并不过分,但是了解Liferay的人可能会更好地理解我的观点.
这些portlet由Spring缝合,并由Hibernate映射到数据库.为了避免编辑context.xml的烦人需求(这很烦人,容易出错,容易忘记,使持久层慢到地狱等),我提供了Liferay数据源作为新bean.
<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>
…并使用此新bean作为实体管理器工厂的数据源:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="liferayDataSource"/>
<property name="persistenceUnitName" value="liferay-db" />
</bean>
如果我正在运行Liferay并部署了Portlet,则它可以正常运行,因为Liferay资源已经可用.问题是,当我重新启动Liferay时,这些Portlet在Liferay应用程序启动之前就已加载,因此InfrastructureUtil类甚至都没有加载.因此,我想推迟portlet的加载.
我注意到每个应用程序在$CATALINA_HOME / temp /下都有一个目录,通常称为0-this-annoying-portlet,2-that-weird-portlet等.我相信开头的数字决定顺序,因为它强制按字母顺序对应用程序进行排序.真的吗?我可以设定这个号码吗?
当然,我接受任何解决方案,但我真的对在Tomcat中定义应用程序加载顺序的可能性感到好奇.
解决方法:
也许这会有所帮助
Which Tomcat 5 context file takes precedence?
标签:liferay-6,tomcat,tomcat6,liferay,java 来源: https://codeday.me/bug/20191101/1984610.html