Tomcat Servlet 上下文 .xml 中资源的通配符

Wildcards for resources in a Tomcat Servlet's context.xml

提问人:DonGar 提问时间:9/16/2008 最后编辑:DonGar 更新时间:10/20/2008 访问量:1929

问:

我对 Tomcat 不太熟悉,但我的团队继承了一个复杂的项目,该项目围绕着 Tomcat 中托管在许多服务器上的 Java Servlet 展开。自定义配置管理软件用于写出服务器 .xml,写入服务器 .xml 的各种资源(连接池、Bean、服务器变量等)配置 servlet。这一切都很好。

但是,某些资源的名称事先不知道。例如,Servlet 可能需要访问操作员配置的任意数量的“匿名器”。每个匿名器都有一个与之关联的唯一名称。我们使用 java bean 创建和配置每个匿名器,如下所示:

<Resource
  name="bean/Anonymizer_toon"
  type="com.company.tomcatutil.AnonymizerBean"
  factory="org.apache.naming.factory.BeanFactory"
  className="teAnonymizer"
  databaseId="50"
/>
<Resource
  name="bean/Anonymizer_default"
  type="com.company.tomcatutil.AnonymizerBean"
  factory="org.apache.naming.factory.BeanFactory"
  className="teAnonymizer"
  databaseId="54"
/>

但是,这似乎要求我们在 Servlet 的上下文 .xml 文件中为每个可能的资源名称提前提供显式条目。我想用通配符替换显式上下文 .xml 条目,或者知道是否有更好的解决方案来解决此类问题。

现在:

  <ResourceLink name="bean/Anonymizer_default"
                global="bean/Anonymizer_default"
                type="com.company.tomcatutil.AnonymizerBean"/>

  <ResourceLink name="bean/Anonymizer_toon"
                global="bean/Anonymizer_toon"
                type="com.company.tomcatutil.AnonymizerBean"/>

替换为如下内容:

  <ResourceLink name="bean/Anonymizer_*"
                global="bean/Anonymizer_*"
                type="com.company.tomcatutil.AnonymizerBean"/>

但是,我无法弄清楚这是否可行或正确的语法可能是什么。谁能就处理这个问题的更好方法提出任何建议?

Java Tomcat

评论


答:

1赞 MetroidFan2002 9/16/2008 #1

我不知道这是否是您所需要的,但也许您可能想研究为 Tomcat 创建自己的自定义资源工厂。以下是通过 Tomcat 提供的所有资源的一般文档: Tomcat 资源

评论

0赞 DonGar 9/17/2008
这回答了部分问题。似乎没有办法使用任何形式的名称通配符定义 ResourceLink。也许我们可以尝试通过以某种方式将资源捆绑在一起来解决这个问题,以便所有匿名器作为单个资源通过 context.xml。
1赞 Olaf Kock 10/20/2008 #2

我没有遇到过这个问题,但是将 AnonymizerService 之类的东西作为资源来揭示所有不同的必需 AnonymizerBeans 可能会更容易。这样一来,通配符就没有问题了,只需将一个资源发布到 Web 应用程序,就可以回到定义明确且易于理解的路径上。

希望在最初的问题后大约一个月有所帮助......