Tomcat Servlet的context.xml中的资源通配符

时间:2008-09-16 00:07:20

标签: java tomcat

我对Tomcat并不过分熟悉,但我的团队继承了一个复杂的项目,该项目围绕着在许多服务器上托管在Tomcat中的Java Servlet。自定义配置管理软件用于写出server.xml,写入server.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的context.xml文件中为每个可能的资源名称提供显式条目。我想用通配符替换显式的context.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"/>

但是,我无法弄清楚这是否可能或语法是否正确。任何人都可以就更好的方法提出任何建议吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我没有遇到过这个问题,但是像AnonymizerService这样的资源可能会更容易显示所有不同的AnonymizerBeans。这样,您就不会遇到通配符问题,只需将一个资源发布到Web应用程序,然后您就可以回到定义良好且易于理解的路径上。

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