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

时间:2020-03-05 18:54:50  来源:igfitidea点击:

我对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"/>

但是,我无法弄清楚这是否可行或者正确的语法是什么。任何人都可以对解决此问题的更好方法提出任何建议吗?

解决方案

回答

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

回答

我还没有遇到过,但是将AnonymizerService之类的资源显示为可以显示所有所需的不同AnonymizerBeans的资源可能会更容易。这样,我们就不会对通配符产生任何问题,只需要向Web应用程序发布一个资源,就可以回到定义良好且易于理解的路径上。

希望能在提出第一个问题后一个月左右为我们提供帮助...