WSO2 EI 6.1.1配置IBM WAS 8.5 JMS消息存储遇Jar包版本问题
解决WSO2 EI 6.1.1配置IBM WAS 8.5 JMS消息存储的Jar包适配问题
我完全理解你现在的困扰——参考的文档是针对IBM WAS 7.0的,而WAS 8.5的依赖Jar包确实有不少变更,靠名称匹配容易踩坑。下面是针对WAS 8.5版本整理的正确配置步骤和Jar包清单:
第一步:准备正确的WAS 8.5依赖Jar包
需要将以下Jar包从你的IBM WAS 8.5安装目录拷贝到WSO2 EI的 <EI_HOME>/lib 目录下(替换旧文档里7.0的Jar包):
com.ibm.ws.ejb.thinclient_8.5.0.jar(来自WAS安装目录的runtimes文件夹)com.ibm.ws.jms.client_8.5.0.jar(来自plugins文件夹)com.ibm.ws.runtime.jar(来自runtimes文件夹)com.ibm.ws.webservices.thinclient_8.5.0.jar(来自runtimes文件夹)com.ibm.ws.sib.client.thin.jms_8.5.0.jar(来自plugins文件夹,这个是WAS 8.5处理JMS核心逻辑的关键包,很容易遗漏)- 如果你的WSO2 EI中没有自带
commons-logging-1.1.1.jar,也需要补充这个依赖
第二步:调整WSO2 EI的JMS配置
在WSO2 EI的 <EI_HOME>/conf/axis2/axis2.xml 文件中,配置JMS连接工厂时要适配WAS 8.5的JNDI参数,示例配置如下:
<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"> <parameter name="wasJmsQueueConnectionFactory" locked="false"> <!-- WAS 8.5的JNDI初始上下文工厂 --> <parameter name="java.naming.factory.initial" locked="false">com.ibm.websphere.naming.WsnInitialContextFactory</parameter> <!-- WAS服务器的CORBA地址,格式为corbaloc::[主机]:[端口],默认端口2809 --> <parameter name="java.naming.provider.url" locked="false">corbaloc::your-was-server-ip:2809</parameter> <!-- WAS控制台中配置的JMS连接工厂JNDI名称 --> <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">jms/YourQueueConnectionFactory</parameter> <!-- 连接工厂类型:queue或topic --> <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter> <!-- WAS JMS资源的访问账号 --> <parameter name="transport.jms.UserName" locked="false">your-was-jms-user</parameter> <!-- 对应的密码 --> <parameter name="transport.jms.Password" locked="false">your-was-jms-password</parameter> </parameter> </transportSender>
第三步:配置JMS消息存储
如果你是通过WSO2 EI管理控制台配置JMS消息存储,注意以下要点:
- 选择
IBM WebSphere JMS作为消息存储类型 - 填写正确的JNDI初始上下文工厂、提供者URL,以及WAS端配置的队列/主题JNDI名称
- 确保消息存储的连接参数和axis2.xml中的配置保持一致
第四步:验证与排错
- 配置完成后重启WSO2 EI
- 发送测试消息到目标JMS队列/主题,检查EI是否能正常接收处理
- 如果遇到类找不到的错误,优先检查是否遗漏了上述Jar包,尤其是
com.ibm.ws.sib.client.thin.jms_8.5.0.jar - 查看EI的日志文件
<EI_HOME>/repository/logs/wso2carbon.log,根据报错信息定位问题(比如JNDI连接失败可能是URL或权限配置错误)
另外,还要确保WSO2 EI运行的用户账号在IBM WAS控制台中拥有访问对应JMS资源的权限,避免出现权限拒绝的错误。
内容的提问来源于stack exchange,提问作者Venkatesh Rao
相关产品推荐
相关产品推荐

