【问题标题】:Wildcards for resources in a Tomcat Servlet's context.xmlTomcat Servlet 的 context.xml 中资源的通配符
【发布时间】:2010-09-09 05:57:00
【问题描述】:

我对 Tomcat 并不太熟悉,但我的团队继承了一个复杂的项目,该项目围绕着一个 Java Servlet,该 Java Servlet 托管在 Tomcat 中,跨多个服务器。使用自定义配置管理软件写出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"/>

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

【问题讨论】:

    标签: java tomcat


    【解决方案1】:

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

    【讨论】:

    • 这回答了部分问题。似乎没有办法用任何形式的名称通配符定义 ResourceLink。也许我们可以尝试通过以某种方式将资源捆绑在一起来解决这个问题,以便所有匿名者作为单个资源通过 context.xml。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      相关资源
      最近更新 更多