【发布时间】:2019-04-26 08:11:29
【问题描述】:
我正在尝试配置连接到 IBM MQ 的 JMS 入站端点。但在部署时,我们得到一个“java.lang.ClassCastException”。
以下是已完成配置的详细信息。
先决条件
1.将wmq-client-8.0.0.4.jar文件复制到/dropins目录下。
2.将jta_1.1_1.0.0.jar文件复制到/lib目录下。
3. 从 /conf/etc/launch.ini 文件中删除以下行:javax.jms,\
4. .bindings 放在 C:\jndidirectory
5. 启动 WSO2 EI 服务器。
创建的 JMS 入站端点如下
<?xml version="1.0" encoding="UTF-8"?>
<inboundEndpoint name="ibm-inbound" onError="common_error_handler" protocol="jms" sequence="online-seq" suspend="false" xmlns="http://ws.apache.org/ns/synapse">
<parameters>
<parameter name="interval">10</parameter>
<parameter name="sequential">false</parameter>
<parameter name="coordination">false</parameter>
<parameter name="transport.jms.Destination">MYQUEUE</parameter>
<parameter name="transport.jms.CacheLevel">3</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName">HAQU1</parameter>
<parameter name="java.naming.factory.initial">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
<parameter name="java.naming.provider.url">file:///C:/jndidirectory</parameter>
<parameter name="transport.jms.UserName">user</parameter>
<parameter name="transport.jms.SessionAcknowledgement">AUTO_ACKNOWLEDGE</parameter>
<parameter name="transport.jms.Password">password</parameter>
<parameter name="transport.jms.SessionTransacted">false</parameter>
<parameter name="transport.jms.ConnectionFactoryType">queue</parameter>
<parameter name="transport.jms.ContentType">application/json</parameter>
<parameter name="transport.jms.SharedSubscription">false</parameter>
<parameter name="transport.jms.ResetConnectionOnPollingSuspension">true</parameter>
</parameters>
</inboundEndpoint>
在部署 CAR 时,我们收到如下错误。
org.apache.synapse.SynapseException:初始化入站端点 rm-to-ec-online-inbound 时出错
在 org.apache.synapse.inbound.InboundEndpoint.init(InboundEndpoint.java:83)
在 org.apache.synapse.deployers.InboundEndpointDeployer.deploySynapseArtifact(InboundEndpointDeployer.java:57)
在 org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:197)
在 org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifactType(SynapseAppDeployer.java:1065)
在 org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:106)
在 org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:272)
在 org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:72)
在 org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
在 org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807)
在 org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
在 org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
在 org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254)
在 org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371)
在 org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59)
在 org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67)
在 org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:93)
在 org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:138)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
在 java.lang.Thread.run(Thread.java:748)
原因:java.lang.ClassCastException:com.ibm.mq.jms.MQConnectionFactory 无法转换为javax.jms.QueueConnectionFactory
在 org.wso2.carbon.inbound.endpoint.protocol.jms.factory.JMSConnectionFactory.createConnectionFactory(JMSConnectionFactory.java:187)
在 org.wso2.carbon.inbound.endpoint.protocol.jms.factory.JMSConnectionFactory.(JMSConnectionFactory.java:164)
在 org.wso2.carbon.inbound.endpoint.protocol.jms.factory.CachedJMSConnectionFactory.(CachedJMSConnectionFactory.java:38)
在 org.wso2.carbon.inbound.endpoint.protocol.jms.JMSPollingConsumer.(JMSPollingConsumer.java:78)
在 org.wso2.carbon.inbound.endpoint.protocol.jms.JMSProcessor.init(JMSProcessor.java:89)
在 org.apache.synapse.inbound.InboundEndpoint.init(InboundEndpoint.java:79)
... 23 更多
【问题讨论】: