首页 > 解决方案 > JNDI - 如何使用嵌入在 JAR、WAR 或 EAR 中的文件在提供程序 URL 中使用?

问题描述

我正在使用 log4j2 通过 JMS/MQ 将消息记录到系统中。我使用 IBM MQ Explorer 在本地 C:\JNDI-Directory 文件夹中创建了一个 .bindings 文件。这在本地运行时效果很好,但是当我部署到 WebSphere 时,我希望能够将我的 .bindings 文件与我的 EAR 捆绑在一起。我的 log4j2.xml 中的 appender 看起来像:

<JMS name="jmsQueue"
         destinationBindingName="AuditDest"
         factoryName="com.sun.jndi.fscontext.RefFSContextFactory"
         providerURL="file:/C:/JNDI-Directory"
         factoryBindingName="JMSConnectionFactory">
      <PatternLayout pattern="%m"/>
    </JMS>

我的部署环境是在 AIX 上运行的 WebSphere Application Server。我将部署多个环境(即 Dev、Test、QA、Stage、Production),并且在我的构建中,我想使用基于我在本地创建的环境特定的 .bindings 文件作为队列管理器名称并且IP会因每个环境而改变。

所以我想我可以把 .bindings 文件放在一个属性文件夹中,在构建部署环境的过程中,只需将 dev.bindings 复制到 WAR 或 EAR 存档中的 .bindings 即可。但是,我不确定如何构造 providerURL 字符串。如果我只是在本地机器上使用“file:/properties/”,它会被解释为 C:\properties,而不是查看我的 WAR 或 EAR MANIFEST.MF 类路径。

是否可以这样做,还是我必须要求我们的 WAS 管理员为每个服务器创建一个 .bindings 文件?我想避免这种情况,以便我可以更直接地控制事情,因为在我们的 WAS 环境中请求更改将需要一张票,这需要提前完成等等。

谢谢!!!

标签: javaurllog4j2jndiear

解决方案


推荐阅读