ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-如何在Tomcat中定义上下文加载的顺序,或在上下文之间定义一些依赖关系层次结构?

2019-11-01 15:13:17  阅读:310  来源: 互联网

标签:liferay-6 tomcat tomcat6 liferay java


假设我有两个要在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?

http://static.springsource.org/spring/docs/3.1.1.RELEASE/spring-framework-reference/html/beans.html#beans-factory-dependson

标签:liferay-6,tomcat,tomcat6,liferay,java
来源: https://codeday.me/bug/20191101/1984610.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有