Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat Servlet中资源的通配符';s context.xml_Java_Tomcat - Fatal编程技术网

Java Tomcat Servlet中资源的通配符';s context.xml

Java Tomcat Servlet中资源的通配符';s context.xml,java,tomcat,Java,Tomcat,我对Tomcat不太熟悉,但我的团队继承了一个复杂的项目,该项目围绕着一个Java Servlet,该Servlet托管在Tomcat中的多个服务器上。自定义配置管理软件用于写出server.xml,并将各种资源(连接池、bean、服务器变量等)写入server.xml来配置servlet。这一切都很好 但是,一些资源的名称事先并不知道。例如,Servlet可能需要访问操作员配置的任意数量的“匿名化器”。每个匿名者都有一个与之关联的唯一名称。我们使用java bean创建和配置每个匿名器,如下所

我对Tomcat不太熟悉,但我的团队继承了一个复杂的项目,该项目围绕着一个Java Servlet,该Servlet托管在Tomcat中的多个服务器上。自定义配置管理软件用于写出server.xml,并将各种资源(连接池、bean、服务器变量等)写入server.xml来配置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提供的所有东西资源的一般文档:

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


希望这能在第一个问题回答一个月后有所帮助…

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