Tomcat Servlet context.xml 中资源的通配符
题
我对 Tomcat 不太熟悉,但我的团队继承了一个复杂的项目,该项目围绕跨多个服务器托管在 Tomcat 中的 Java Servlet 展开。自定义配置管理软件用于编写server.xml,并将各种资源(连接池、bean、服务器变量等)写入server.xml来配置servlet。这一切都很好。
然而,某些资源的名称事先并不知晓。例如,Servlet 可能需要访问运营商配置的任意数量的“匿名器”。每个匿名器都有一个与其关联的唯一名称。我们使用类似于以下内容的 java beans 创建和配置每个匿名器:
<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"/>
但是,我无法弄清楚这是否可能或正确的语法可能是什么。任何人都可以就处理此问题的更好方法提出任何建议吗?
解决方案
我还没有遇到过这种情况,但是使用 AnonymizerService 之类的东西作为资源来显示所有不同的所需 AnonymizerBeans 可能会更容易。这样,您就不会遇到通配符问题,只需将一个资源发布到 Web 应用程序,然后您就回到了明确定义且易于理解的路径。
希望在最初的问题后一个月左右能有所帮助......
其他提示
我不知道这是否是您所需要的,但也许您可能想研究为 Tomcat 创建自己的自定义资源工厂。以下是通过 Tomcat 获取所有资源的一般文档: 雄猫资源
不隶属于 StackOverflow