glassfish
  1. glassfish
  2. GLASSFISH-6703

Durable subscriber Topic test failed against IBM MQ

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: v2.1
    • Fix Version/s: 4.0_b71
    • Component/s: jms
    • Labels:
      None
    • Environment:

      Operating System: All
      Platform: All

    • Issuezilla Id:
      6,703

      Description

      OS: soarlis
      build: promoted build 58
      This is a GRA test failiure.
      summary: Durable subscriber Topic test failed to deploy against IBM MQ. However,
      with the same setup/configuration, all other GRA test cases passed. Only the
      durable subscriber test had the problem.
      Test description:
      Servlet calls EJB method which sends a message to a topic that is a durable
      subscriber. Server is restarted and servlet checks that the message is received.
      Steps to reproduce the bug:
      1. Install V2 promoted build 56. start domain
      2. Checkout SQE workspace cvs co -r SJSAS911_FCS_BRANCH appserver-sqe/boostrap.xml
      (CVSROOT: :pserver:<user>@redcvs.red.iplanet.com:/m/jws)
      cd appserver-sqe
      ant -f bootstrap.xml -Dtag=SJSAS911_FCS_BRANCH co-gra
      3.set env. variables
      S1AS_HOME <as install dir>
      SPS_HOME <appserver-sqe>
      ANT_HOME
      JAVA_HOME
      4. cd appserver-sqe/pe/, open file config.properties, modify admin.user,
      admin.password, admin.port... values based on your AS install information
      5. follow the following README file to setup IBM MQ to run GRA test:
      http://server-rel.red.iplanet.com/h/nimitz.red.iplanet.com/export2/GRA/GRA2.0/GRA_IBMMQ_Readme.html
      5. cd appserver-sqe/pe/genericra/test15, run command
      ant build deploy run
      The test failed to deploy the test application. The server.log shows the
      following error:
      [#|2008-11-03T14:52:18.110-0800|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=14;_ThreadName=httpSSLWorkerThread-4848-0;_RequestID=c72cb32f-3716-4de3-bc63-775b5e305ecb;|
      javax.resource.ResourceException: MQJMS5053: *** No broker response. Please
      ensure that the broker is running. If you are using the WebSphere MQ broker
      check that your brokerVersion is set to V1 ***
      at
      com.sun.genericra.util.ExceptionUtils.newResourceException(ExceptionUtils.java:73)
      at
      com.sun.genericra.inbound.async.EndpointConsumer._start(EndpointConsumer.java:131)
      at com.sun.genericra.inbound.async.EndpointConsumer.start(EndpointConsumer.java:83)
      at com.sun.genericra.GenericJMSRA.endpointActivation(GenericJMSRA.java:216)
      at
      com.sun.enterprise.connectors.inflow.ConnectorMessageBeanClient.setup(ConnectorMessageBeanClient.java:252)
      at
      com.sun.ejb.containers.MessageBeanContainer.<init>(MessageBeanContainer.java:209)
      at
      com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:280)
      at com.sun.enterprise.server.AbstractLoader.loadEjbs(AbstractLoader.java:537)
      at com.sun.enterprise.server.ApplicationLoader.doLoad(ApplicationLoader.java:191)
      at
      com.sun.enterprise.server.TomcatApplicationLoader.doLoad(TomcatApplicationLoader.java:126)
      at
      com.sun.enterprise.server.ExtendedApplicationLoader.doLoad(ExtendedApplicationLoader.java:134)
      at com.sun.enterprise.server.AbstractLoader.load(AbstractLoader.java:245)
      at
      com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:336)
      at
      com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:210)
      at
      com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:645)
      at
      com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:958)
      at
      com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:942)
      at
      com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:467)
      at
      com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:182)
      at
      com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308)
      at
      com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:230)
      at
      com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298)
      at
      com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132)
      at
      com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
      at
      com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:934)
      at
      com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:605)
      at
      com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:649)
      at
      com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:773)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:381)
      at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:364)
      at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:477)
      at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
      at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
      at
      com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
      at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
      at $Proxy1.invoke(Unknown Source)
      at
      com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
      at
      com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
      at
      com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeCaller.java:69)
      at
      com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(MBeanServerRequestHandler.java:155)
      at
      com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest(RemoteJmxConnectorServlet.java:122)
      at
      com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost(RemoteJmxConnectorServlet.java:193)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
      at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source)
      at
      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:292)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:325)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:208)
      at
      org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:420)
      at
      org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
      at
      org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
      at
      org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
      at
      com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
      at
      org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
      at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
      at
      com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
      at
      com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
      at
      com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
      at
      com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
      at
      com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.process(SSLReadTask.java:440)
      at
      com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.doTask(SSLReadTask.java:228)
      at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
      at
      com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
      Caused by: com.ibm.mq.jms.NoBrokerResponseException: MQJMS5053: *** No broker
      response. Please ensure that the broker is running. If you are using the
      WebSphere MQ broker check that your brokerVersion is set to V1 ***
      at
      com.ibm.mq.jms.MQBrokerSubscriptionEngine.getBrokerResponse(MQBrokerSubscriptio|#]

      [#|2008-11-03T14:52:18.114-0800|WARNING|sun-appserver9.1|javax.enterprise.system.stream.err|_ThreadID=14;_ThreadName=httpSSLWorkerThread-4848-0;_RequestID=c72cb32f-3716-4de3-bc63-775b5e305ecb;|nEngine.java:3041)
      at
      com.ibm.mq.jms.MQBrokerSubscriptionEngine.openDurableSubscription(MQBrokerSubscriptionEngine.java:1058)
      at
      com.ibm.mq.jms.MQMigrateSubscriptionEngine.openDurableSubscription(MQMigrateSubscriptionEngine.java:547)
      at com.ibm.mq.jms.MQConnectionBrowser.pubSubSetup(MQConnectionBrowser.java:440)
      at
      com.ibm.mq.jms.MQConnectionBrowser.MQConnectionBrowserInit(MQConnectionBrowser.java:306)
      at com.ibm.mq.jms.MQConnectionBrowser.<init>(MQConnectionBrowser.java:155)
      at
      com.ibm.mq.jms.MQConnection.createDurableConnectionBrowser(MQConnection.java:3470)
      at com.ibm.mq.jms.MQConnectionConsumer.<init>(MQConnectionConsumer.java:461)
      at
      com.ibm.mq.jms.MQConnection.createDurableConnectionConsumer(MQConnection.java:3364)
      at
      com.sun.genericra.inbound.async.InboundJmsResourcePool.createDurableConnectionConsumer(InboundJmsResourcePool.java:139)
      at
      com.sun.genericra.inbound.async.EndpointConsumer._start(EndpointConsumer.java:112)
      ... 85 more

      #]
      ---------------------- Attached server.log --------------

        Activity

        Hide
        sonialiu added a comment -

        Created an attachment (id=2049)
        server.log

        Show
        sonialiu added a comment - Created an attachment (id=2049) server.log
        Hide
        Satish Kumar added a comment -

        Based on the attached log records the problem does not seem to be due to
        GenericRA but rather a setup/configuration issue. Firstly, pls ensure that the
        broker is running. Secondly, set forBrokerVersion=V1 in the
        TopicConnectionFactory.

        If this does not solve the problem, pls attach the IBM MQ logs.

        Show
        Satish Kumar added a comment - Based on the attached log records the problem does not seem to be due to GenericRA but rather a setup/configuration issue. Firstly, pls ensure that the broker is running. Secondly, set forBrokerVersion=V1 in the TopicConnectionFactory. If this does not solve the problem, pls attach the IBM MQ logs.
        Hide
        sonialiu added a comment -

        As per Satish's suggestion I have add forBrokerVersion=V1 while creating
        connection pool. Here is the command:
        create-connection-pool:
        [exec] create-connector-connection-pool --interactive=true --passwordfile /
        export2/sonia/appserver-sqe/build-config/adminpassword.txt --user admin --terse=
        false --connectiondefinition javax.jms.TopicConnectionFactory --property Connect
        ionFactoryJndiName=XATCF1:SupportsXA=false:forBrokerVersion=V1 --host localhost
        --transactionsupport NoTransaction --raname genericra --echo=true --port 4848 tc
        pool
        When I ran the test, the deployment still failed.
        Then I double checked that QM was running.
        #dspmq
        QMName(QM1) STATUS(Running)
        ...

        I checked the MQ broker port 9000 and it was listening.

        1. netstat -a|grep 9000
          .9000 *. 0 0 49152 0 LISTEN
          treeps.34576 treeps.9000 49152 0 49152 0 ESTABLISHED
          treeps.9000 treeps.34576 49152 0 49152 0 ESTABLISHED
          treeps.34577 treeps.9000 49152 0 49152 0 ESTABLISHED
          treeps.9000 treeps.34577 49152 0 49152 0 ESTABLISHED
          .9000 *. 0 0
          49152 0 LISTEN
          then I ran another GRA test using the same setup, the test passed. And Only the
          durable subscriber Topic test cases failed (test18 and test15).
        Show
        sonialiu added a comment - As per Satish's suggestion I have add forBrokerVersion=V1 while creating connection pool. Here is the command: create-connection-pool: [exec] create-connector-connection-pool --interactive=true --passwordfile / export2/sonia/appserver-sqe/build-config/adminpassword.txt --user admin --terse= false --connectiondefinition javax.jms.TopicConnectionFactory --property Connect ionFactoryJndiName=XATCF1:SupportsXA=false:forBrokerVersion=V1 --host localhost --transactionsupport NoTransaction --raname genericra --echo=true --port 4848 tc pool When I ran the test, the deployment still failed. Then I double checked that QM was running. #dspmq QMName(QM1) STATUS(Running) ... I checked the MQ broker port 9000 and it was listening. netstat -a|grep 9000 .9000 *. 0 0 49152 0 LISTEN treeps.34576 treeps.9000 49152 0 49152 0 ESTABLISHED treeps.9000 treeps.34576 49152 0 49152 0 ESTABLISHED treeps.34577 treeps.9000 49152 0 49152 0 ESTABLISHED treeps.9000 treeps.34577 49152 0 49152 0 ESTABLISHED .9000 *. 0 0 49152 0 LISTEN then I ran another GRA test using the same setup, the test passed. And Only the durable subscriber Topic test cases failed (test18 and test15).
        Hide
        harpreet added a comment -

        Is this a critical issue for v2.1

        Show
        harpreet added a comment - Is this a critical issue for v2.1
        Hide
        Satish Kumar added a comment -

        This clearly appears to be a Websphere MQ configuration issue. I tried this
        with various combinations to figure out whether this is a configuration issue
        or a bug including trying the test with GRA 1.7 (with GF 2.1) and AS 9.1. I am
        seeing the same exception in all cases and the message in the exception seems
        to clearly point to a configuration problem. The tests pass with SUN MQ. I have
        raised this question in the Websphere MQ forum but I haven't got a reply yet. I
        will update the bug once I get a reply.

        Lowering the priority of this bug to a P4 since in all probability it appears
        to be a configuration issue.

        Show
        Satish Kumar added a comment - This clearly appears to be a Websphere MQ configuration issue. I tried this with various combinations to figure out whether this is a configuration issue or a bug including trying the test with GRA 1.7 (with GF 2.1) and AS 9.1. I am seeing the same exception in all cases and the message in the exception seems to clearly point to a configuration problem. The tests pass with SUN MQ. I have raised this question in the Websphere MQ forum but I haven't got a reply yet. I will update the bug once I get a reply. Lowering the priority of this bug to a P4 since in all probability it appears to be a configuration issue.
        Hide
        kumara added a comment -

        Changing version from 9.1.1 to v2.1 to reflect new name/version.

        Show
        kumara added a comment - Changing version from 9.1.1 to v2.1 to reflect new name/version.
        Hide
        Tom Mueller added a comment -

        Bulk update to change fix version to "not determined" for all issues still open but with a fix version for a released version.

        Show
        Tom Mueller added a comment - Bulk update to change fix version to "not determined" for all issues still open but with a fix version for a released version.
        Hide
        jigang added a comment -

        May be Websphere MQ fixed this issue.
        Durable subscriber Topic test passed to deploy against IBM MQ7.5
        OS:win7
        glassfish build: promoted build 71
        GenericRA:v1.7-final and v2.1b
        Websphere MQ:WMQ 7.5
        Test description:
        Steps for using the Generic Resource Adapter for JMS to integrate IBM - See more at: http://genericjmsra.java.net/docs/websphere-mq-integration-guide/webspheremq_integration_guide.html#sthash.rJVZuBbX.dpuf

        To make a MDB into a durable subscriber, you can add a couple of lines to the sun-ejb-jar.xml:
        <activation-config-property>
        <activation-config-property-name>ClientId</activation-config-property-name>
        <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI -->
        <activation-config-property-value>testTopic</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>SubscriptionDurability</activation-config-property-name>
        <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI -->
        <activation-config-property-value>Durable</activation-config-property-value>
        </activation-config-property>
        <activation-config-property>
        <activation-config-property-name>SubscriptionName</activation-config-property-name>
        <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI -->
        <activation-config-property-value>testtopic</activation-config-property-value>
        </activation-config-property>

        We can deploy this MDB against IBM MQ7.5 successfully and receive its messages even after the mdb is disabled and then reenabled.
        Steps as follows:
        1.deploy the durable subscriber MDB
        2.send the message to the topic
        3.MDB can receive its messages
        4.disabled MDB
        5.send the message to the topic
        6.reenbaled MDB
        7.MDB can receive its messages

        Show
        jigang added a comment - May be Websphere MQ fixed this issue. Durable subscriber Topic test passed to deploy against IBM MQ7.5 OS:win7 glassfish build: promoted build 71 GenericRA:v1.7-final and v2.1b Websphere MQ:WMQ 7.5 Test description: Steps for using the Generic Resource Adapter for JMS to integrate IBM - See more at: http://genericjmsra.java.net/docs/websphere-mq-integration-guide/webspheremq_integration_guide.html#sthash.rJVZuBbX.dpuf To make a MDB into a durable subscriber, you can add a couple of lines to the sun-ejb-jar.xml: <activation-config-property> <activation-config-property-name>ClientId</activation-config-property-name> <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI --> <activation-config-property-value>testTopic</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>SubscriptionDurability</activation-config-property-name> <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI --> <activation-config-property-value>Durable</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>SubscriptionName</activation-config-property-name> <!-- this ia the JNDI name of the inbound destination in Weblogic's JNDI --> <activation-config-property-value>testtopic</activation-config-property-value> </activation-config-property> We can deploy this MDB against IBM MQ7.5 successfully and receive its messages even after the mdb is disabled and then reenabled. Steps as follows: 1.deploy the durable subscriber MDB 2.send the message to the topic 3.MDB can receive its messages 4.disabled MDB 5.send the message to the topic 6.reenbaled MDB 7.MDB can receive its messages

          People

          • Assignee:
            jigang
            Reporter:
            sonialiu
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: