4

IBM WebSphere MQ 6.0.2.3 に接続する Java 1.5.0_15 で JBOSS 4.3 を使用する

JBOSS を開始すると、これらのエラーが発生します。

スタックトレース

Caused by: javax.resource.spi.ResourceAdapterInternalException: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'uatmq1sun:UATMQ1SUN'
        at com.ibm.mq.connector.ResourceAdapterConnectionPool.allocateConnection(ResourceAdapterConnectionPool.java:297)
        at com.ibm.mq.connector.ResourceAdapterImpl.endpointActivation(ResourceAdapterImpl.java:333)
        at org.jboss.resource.deployment.RARDeployment.endpointActivation(RARDeployment.java:271)
        at org.jboss.resource.deployment.RARDeployment.internalInvoke(RARDeployment.java:226)
        at org.jboss.system.ServiceDynamicMBeanSupport.invoke(ServiceDynamicMBeanSupport.java:156)
        at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
        at org.jboss.ejb3.JmxClientKernelAbstraction.invoke(JmxClientKernelAbstraction.java:46)
        at org.jboss.ejb3.mdb.inflow.JBossMessageEndpointFactory.activate(JBossMessageEndpointFactory.java:343)
        ... 147 more


Caused by: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'uatmq1sun:UATMQ1SUN'
        at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:614)
        at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2549)
        at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1899)
        at com.ibm.mq.jms.MQConnection.<init>(MQConnection.java:862)
        at com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnectionFactory.java:4821)
        at com.ibm.mq.connector.ResourceAdapterConnectionPool.initializeJMSConnection(ResourceAdapterConnectionPool.java:445)
        at com.ibm.mq.connector.ResourceAdapterConnectionPool.createNewConnection(ResourceAdapterConnectionPool.java:359)
        at com.ibm.mq.connector.ResourceAdapterConnectionPool.allocateConnection(ResourceAdapterConnectionPool.java:284)
        ... 155 more

JBOSS server.log ファイルの末尾。

--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.j2ee:ear=AmxBol.ear,jar=AmxBol.jar,name=BOLCFulfillmentMDB,service=EJB3
  State: FAILED
  Reason: org.jboss.deployment.DeploymentException: Endpoint activation failed ra=jboss.jca:service=RARDeployment,name='wmq.jmsra.rar' activationSpec=javax.jms.Queue:bolcustomizable@UATMQ1SUN@uatmq1sun; - nested throwable: (javax.resource.spi.ResourceAdapterInternalException: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'uatmq1sun:UATMQ1SUN')

ObjectName: jboss.j2ee:ear=AmxBol.ear,jar=AmxBol.jar,name=BOLPaymentMDB,service=EJB3
  State: FAILED
  Reason: org.jboss.deployment.DeploymentException: Endpoint activation failed ra=jboss.jca:service=RARDeployment,name='wmq.jmsra.rar' activationSpec=javax.jms.Queue:bolpayment@UATMQ1SUN@uatmq1sun; - nested throwable: (javax.resource.spi.ResourceAdapterInternalException: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'uatmq1sun:UATMQ1SUN')

ObjectName: jboss.j2ee:ear=AmxBol.ear,jar=AmxBol.jar,name=BOLPFulfillmentMDB,service=EJB3
  State: FAILED
  Reason: org.jboss.deployment.DeploymentException: Endpoint activation failed ra=jboss.jca:service=RARDeployment,name='wmq.jmsra.rar' activationSpec=javax.jms.Queue:bolpersonalized@UATMQ1SUN@uatmq1sun; - nested throwable: (javax.resource.spi.ResourceAdapterInternalException: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'uatmq1sun:UATMQ1SUN')

関連しているかどうかはわかりませんが、最近 JBOSS にパッチが適用されました。キュー・マネージャー (UATMQ1SUN) は稼働していますが、接続したくないようです。何が間違っている可能性があるかについてのアイデアはありますか? MQ と JBOSS は同じボックスに存在します。

hostname = uatmq1sun
QManagerName = UATMQ1SUN

[mqm@uatmq1sun ~]$ strmqm UATMQ1SUN
WebSphere MQ queue manager running.

[mqm@uatmq1sun ~]$ netstat -an | grep 1416
tcp        0      0 :::1416                     :::*                        LISTEN
4

1 に答える 1

0

JMS は、高レベルの例外に一般的な JMS エラー コードが含まれ、リンクされた例外にプロバイダー固有の例外が含まれる、ネストされた例外をスローします。したがって、たとえば、QMgr オブジェクトの作成が失敗したすべての考えられる理由のうち、一部はローカルで構成エラーなどを含み、一部は接続が試行された場合にのみ発生します。つまり、報告しているエラーのいくつかのケースはコードであり、いくつかは MQ です。リンクされた例外がない場合、問題は MQ にありません。

接続が試行されたときにのみ発生するもの (MQ の問題) のうち、リンクされた例外は、接続したが間違った QMgr 名が見つかったのか、リスナーがなかったのか、チャネル ネゴシエーションが失敗したのかなどを明示的に示します。 .しかし、これらの非常に具体的な説明は、コードがリンクされた例外を出力することを気にする場合にのみ利用できます。

私が働いたり、相談したりしたショップの多くでは、JMS コードがリンクされた例外を出力しないことが判明した場合、それは Sev-1 の欠陥と見なされ、テストされています。このようなコードは本番環境への昇格を妨げられ、本番環境で見つかった場合は、緊急の変更として取り出されて修正されます。予想されるのは、コードがリンクされた例外を出力するか、チェックしたもののリンクされた例外が存在しないことを出力することです。これらがなければ、私たちがここでできること (または運用チームが実際の停止時にできること) は推測することです。

JMS 例外に関する WebSphere MQ Infocenter ページから:

catch (JMSException je) {
    System.err.println("Caught JMSException");

    // Check for linked exceptions in JMSException
    Throwable t = je;
    while (t != null) {
        // Write out the message that is applicable to all exceptions
        System.err.println("Exception Msg: " + t.getMessage());
        // Write out the exception stack trace
        t.printStackTrace(System.err);

        // Add on specific information depending on the type of exception
        if (t instanceof JMSException) {
            JMSException je1 = (JMSException) t;
            System.err.println("JMS Error code: " + je1.getErrorCode());

            if (t instanceof JmsExceptionDetail){
                JmsExceptionDetail jed = (JmsExceptionDetail)je1;
                System.err.println("JMS Explanation: " + jed.getExplanation());
                System.err.println("JMS Explanation: " + jed.getUserAction());
            }
        } else if (t instanceof MQException) {
            MQException mqe = (MQException) t;
            System.err.println("WMQ Completion code: " + mqe.getCompCode());
            System.err.println("WMQ Reason code: " + mqe.getReason());
        } else if (t instanceof JmqiException){
            JmqiException jmqie = (JmqiException)t;
            System.err.println("WMQ Log Message: " + jmqie.getWmqLogMessage());
            System.err.println("WMQ Explanation: " + jmqie.getWmqMsgExplanation());
            System.err.println("WMQ Msg Summary: " + jmqie.getWmqMsgSummary());
            System.err.println("WMQ Msg User Response: "
                               + jmqie.getWmqMsgUserResponse());
            System.err.println("WMQ Msg Severity: " + jmqie.getWmqMsgSeverity());
        }

        // Get the next cause
        t = t.getCause();
    }
}

トランスポート プロバイダを使用JMS 例外をデバッグしようとする場合は、リンクされた例外を出力してください。仕様では、例外の診断条件を伝えるためにネストされたデータ構造が定義されており、その情報を出力しないことを正当化する理由はありません。

于 2014-04-06T13:46:19.750 に答える