java - 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 环境中请求更改将需要一张票,这需要提前完成等等。
谢谢!!!
解决方案
推荐阅读
- mysql - 尝试通过 RMariaDB 连接 MySQL 数据库时出现 RSession 致命错误
- javascript - 使用 puppeteer 截取屏幕截图并将其存储在谷歌云存储中
- firebase - 如何在 dialogflow 内联实现 package.json 中使用节点引擎版本 10 进行设置?
- python - Python Conway 的人生游戏——并行优化
- typescript - 如何在 nuxt.js 中获取 API 和映射数据表的数据
- reactjs - 为呈现 API 响应而创建的 React 组件抛出未处理的拒绝
- excel - 如何计算Excel工作表中的唯一列数据
- c# - 从 C++ dll 调用方法会在 C# 应用程序中打开控制台窗口,如何抑制控制台?
- reactjs - 等待上下文更新
- ansible - Ansible Playbook msg var 插值似乎仅适用于 yml 文件中的胡萝卜 >