Tomcat7:在shared.loader中出现多个路径问题

时间:2016-11-07 06:35:00

标签: java spring tomcat

我有4个web应用程序,它有自己的属性,可以在tomcat中成功部署,但是当我在Catalina.properties文件中提到tomcat服务器的shared.loader属性中的属性路径时,只有一个。

但是,当我将4个web应用程序与shared.loader中的4个路径一起部署,并以逗号分隔时,它就会失败。原因是,tomcat只选择shared.loader中提到的第一条路径而不是接下来的三条路径。

无论如何,我可以在tomcat7的类加载器中提到所有四个路径。我无法将所有属性存入单个文件夹,因为在四个路径中存在一些具有相同名称的属性文件,并且属性文件中还有一些属性,这些属性对于所有四个Web应用程序具有相同的键,但在相应的属性路径中具有不同的值

1 个答案:

答案 0 :(得分:0)

在公共目录中创建两个目录app1和app2,例如。 C:\ myConfig \ app1和C:\ myConfig \ app2。

将app.properties放在app1中,将另一个config.properties放在app2中。

然后使用以下内容创建文件$ {CATALINA_HOME} / conf / [enginename] / [hostname] /context.xml.default:

<Context>
  <Parameter name="myConfigDirectory" value="C:/myConfig" override="false"/>
</Context>

参数myConfigDirectory可供主机上的所有应用程序使用。最好在context.xml.default中而不是在server.xml中创建此参数,因为稍后可以在不重新启动tomcat的情况下更改该文件。

在warcon中的applicationContext.xml中,你可以使用SpEL表达式访问config.properties:“#{contextParameters.myConfigDirectory + servletContext.contextPath} /config.properties”,例如你可以写:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="file:#{contextParameters.myConfigDirectory + servletContext.contextPath}/config.properties" />
</bean>

对于带有contextPath / app1的应用程序,表达式将扩展为C:/ myConfig / app1,对于带有contextPath / app2的应用程序,表达式将扩展为C:/ myConfig / app2。这将使应用程序根据其contextPath访问config.properties文件。

参考:https://coderanch.com/t/86875/put-configurations-files-war-file