【问题标题】:access another project in TOMCAT在 TOMCAT 中访问另一个项目
【发布时间】:2011-08-26 06:17:09
【问题描述】:

我在 tomcat 中部署了 2 个应用程序,我想在一个项目中使用位于其他项目 WEBINF 文件夹中的资源文件。我可以访问这样的另一个项目吗?

在我的项目 A 中,我想像这样访问项目 B:

<bean id="Configuration"
    class="com.ws.configuration.WebServiceConfiguration"
    init-method="init">
    <property name="ConfigXml" value="webserviceconfiguration.xml" />
    <property name="executingPathResource" value="../../projectB/WEB-INF/" />
    <property name="developmentMode" value="true" />
</bean>

注意:我使用 spring,我可以给另一个项目 web inf 文件夹的路径吗?

tnx

【问题讨论】:

  • 你使用的是哪个 Tomcat 版本?
  • 你指的是什么资源?
  • 我编辑了你可以检查的问题

标签: java tomcat servlets jakarta-ee


【解决方案1】:

以下情况之一呢:

  1. 您可以将资源文件放在 Tomcat 之外,并使用 JNDI 上下文从两个 Web 应用程序中引用它。如果您知道配置文件的根目录,则可以使用某种逻辑来找出文件的位置。相对路径优先于绝对路径,因为您的应用程序可能在文件系统中具有不同的位置,具体取决于环境:开发、测试和生产。尽管如此,了解配置文件的根目录(也可以使用环境变量设置)和一些逻辑,您可以从任何 Web 应用程序访问该文件。

  2. 使用ClassLoader.getResourceAsStream 访问资源文件并将它们放入类路径中,例如 webserviceconfiguration.xml 位于两个应用程序引用的源目录之一中。通过这种方式,您可以在两个 WEB-INF 中或任何您的类结束的地方结束该文件,但它始终具有相同的内容,因为它来自同一个源文件。

【讨论】:

【解决方案2】:

你可以把它放在网络应用A中;

File f = new File("C:\\tomcat\\webapps\\appB\\WEB-INF\\myResource.xml");

tomcat 不会阻止你。不过,我想不出这是个好主意。

【讨论】:

  • 除了从其他网络应用程序访问资源不是一个好主意(你是对的)硬编码路径是另一个坏主意。 JDNI 将是提供资源路径的更好解决方案。
【解决方案3】:

您可以通过以下方式为您的所有网络应用程序提供额外的 API 将解压缩的类放入“类”目录(默认情况下未创建), 或者将它们放在 CATALINA_HOME 的“lib”目录中的 JAR 文件中

【讨论】:

  • 这是可能的,但你必须非常小心哪些类进入 - 因为类加载器分离 Web 应用程序,如果应该分离的类从共享类加载器中引用,你可能会得到丑陋的副作用反之亦然。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 2022-12-28
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
相关资源
最近更新 更多