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应用程序发布一个资源,就可以回到定义良好且易于理解的路径上。
希望能在提出第一个问题后一个月左右为我们提供帮助...