在eclipse中配置项目,使其最终在tomcat“common”类加载器中

时间:2009-07-04 15:57:32

标签: eclipse tomcat

我有两个需要使用单例共享信息的tomcat Web应用程序。我已经通过将jared类放在tomcat公共目录中来使它工作。然后每个webapp获得单例的相同副本。我想做的是在eclipse中集成这种行为。我希望公共类是一个单独的项目,每次我在eclipse中启动tomcat服务器时都会将其合并到tomcat公共类加载器中。任何人都知道如何配置eclipse来做到这一点?

2 个答案:

答案 0 :(得分:1)

可能是extend the tomcat class loader的一种可能性,以便该类加载器在other directories than WEB-INF/lib中搜索,这可以通过:

  • 扩展org.apache.catalina.loader.WebappClassLoader并覆盖findClassInternal方法。

  • 配置Tomcat以使用扩展类加载器 这是在Tomcat conf/Catalina/hostname路径下的相应webapp配置文件中完成的,其中包含以下元素:

       ...

然后在eclipse中,您可以在“构建路径上的必需项目”上设置您的公共项目,这使它成为类路径的一部分。

这意味着你的扩展类加载器必须能够寻找其他的classe:

  • 以固定的预定义路径
  • 或在类路径中的预定义路径中。

我自己没有经过测试,但可能会让你在这个问题上发挥领导作用。


noselasd在评论中提出了一个更简单的解决方案,利用了Tomcat的GlobalNamingResources Component

然而,FAQ does mentions

  

在Eclipse中创建新的Tomcat服务器时,New Server向导假定影响此新服务器将使用的Tomcat安装的当前行为是不安全的。

     

WTP能够通过使用Tomcat从单个安装运行多个服务器实例的能力来避免影响已安装的Tomcat的行为。因此,您创建的每个新Tomcat服务器的默认配置将是与向导中选择的Tomcat运行时关联的Tomcat安装的新服务器实例。
  如果您希望Eclipse中的新Tomcat服务器运行与Tomcat安装中的默认批处理文件相同的实例,那么当Eclipse中的Tomcat服务器没有按预期运行时,您可能会感到惊讶。

     

可以更改Tomcat服务器配置,使其运行与Tomcat安装相同的实例。

您可以在此处找到如何modify the server.xml in WTP

答案 1 :(得分:1)

我设法让它运转起来。这是我做的:

  • 在eclipse工作区中创建了一个common项目。
  • 创建了两个名为firstsecond的网络应用程序,它们应共享common项目。

创建Web应用程序时,将使用tomcat配置创建Servers项目。

  • 在Servers项目中更改catalina.properties并添加行shared.loader=/path-to-workspace/common/bin

这非常适合开发。每次创建新构建时,所有内容都是同步的。对于部署您需要将common项目转换为common.jar并将其放入${catalina.home}/lib