ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » IBM MQ Java / JMS » How to set TARGCLIENT property ?

Post new topic  Reply to topic
 How to set TARGCLIENT property ? « View previous topic :: View next topic » 
Author Message
anilit99
PostPosted: Mon Jun 29, 2009 2:57 am    Post subject: How to set TARGCLIENT property ? Reply with quote

Voyager

Joined: 28 May 2009
Posts: 75
Location: London, UK

Hello there,
Can you please tell me how to set the TARGCLIENT property using JMS ?

This is my setup :
App Server: JBoss
Resource Adapter : wmq.jmsra.rar

1. I've binded the MQConnectionFactory visible in the global name space.
2. To post a message I just look up this connection factory and use JMS objects to post the message.

Can I set this field using JMS API or should I use the MQ API for java and remove the problem altogether ?



thanks
Anil.
Back to top
View user's profile Send private message
Vitor
PostPosted: Mon Jun 29, 2009 2:59 am    Post subject: Re: How to set TARGCLIENT property ? Reply with quote

Grand High Poobah

Joined: 11 Nov 2005
Posts: 26093
Location: Texas, USA

anilit99 wrote:
Can I set this field using JMS API or should I use the MQ API for java and remove the problem altogether ?


It's always best to use the JMS unless you have a seriously good reason not to. This doesn't seem all that good.

A quick search of the forum turned up a number of discussions that sounded useful in the setting of this value.
_________________
Honesty is the best policy.
Insanity is the best defence.
Back to top
View user's profile Send private message
anilit99
PostPosted: Mon Jun 29, 2009 4:32 am    Post subject: Reply with quote

Voyager

Joined: 28 May 2009
Posts: 75
Location: London, UK

Hi Vitor !
thanks a ton ! really a fast reply !
Forums like these really help guys like me to venture into any exciting technology without much fear !

thanks
Anil.
Back to top
View user's profile Send private message
anilit99
PostPosted: Mon Jun 29, 2009 9:10 am    Post subject: Reply with quote

Voyager

Joined: 28 May 2009
Posts: 75
Location: London, UK

Fixed !
I am using JBoss and posting messages using MQ resource adapter.

If you are using a similar setup, the easiest way to set all the properties exposed on the MQ classes for JMS is setting them on the resource adapter. No explicit JMS administration.

Code:

    <mbean code="org.jboss.resource.deployment.AdminObject" name="jboss.jca:service=WASDestination,name=dev_request_queue">
        <depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name='wmq.jmsra.rar'</depends>
        <attribute name="JNDIName">request_queue</attribute>
        <attribute name="Type">javax.jms.Queue</attribute>
        <attribute name="Properties">
            baseQueueManagerName=test_QM
            baseQueueName=dev_request_queue
            targetClient=JMS
        </attribute>
     </mbean>


thanks Vitor !

cheers
Anil.
Back to top
View user's profile Send private message
hsq125
PostPosted: Wed Aug 05, 2009 7:22 am    Post subject: ClassCastException while retrieving QueueConnectionFactory Reply with quote

Newbie

Joined: 05 Aug 2009
Posts: 2

Hi!!

I am also using JBoss (version 5) and posting messages using MQ resource adapter ( wmq.jmsra.rar, right ?) , which is configured with the following xml file copied into /usr/local/jboss/server/default/deploy

Code:

       <connection-factories>

           <!-- JCA Connection factory definitions -->
           <tx-connection-factory>
               <jndi-name>MQCF</jndi-name>
               <xa-transaction />
               <rar-name>wmq.jmsra.rar</rar-name>
               <connection-definition>javax.jms.ConnectionFactory</connection-definition>
               <config-property name="channel" type="java.lang.String">SYSTEM.DEF.SVRCONN</config-property>
               <config-property name="hostName" type="java.lang.String">sputnik</config-property>
               <config-property name="port" type="java.lang.String">1414</config-property>
               <config-property name="queueManager" type="java.lang.String">QM_MERCATOR.SPUTNIK.TEST</config-property>
               <config-property name="transportType" type="java.lang.String">CLIENT</config-property>
           </tx-connection-factory>

           <!-- mbeans defining JCA administered objects -->
           <mbean code="org.jboss.resource.deployment.AdminObject" name="jca.wmq:name=RequestQueue">
               <attribute name="JNDIName">jca:/mq/jmsra/JCAAdminObject/RequestQueue</attribute>
               <depends optional-attribute-name="RARName">jboss.jca:service=RARDeployment,name='wmq.jmsra.rar'</depends>
               <attribute name="Type">javax.jms.Queue</attribute>
               <attribute name="Properties">
                   baseQueueManagerName=QM_MERCATOR.SPUTNIK.TEST
                   baseQueueName=Q_APCA.INPUT
                   targetClient=JMS
               </attribute>
           </mbean>

       </connection-factories>



I put message into the RequestQueue queue with the following java code

Code:

@Stateless
@TransactionAttribute(javax.ejb.TransactionAttributeType.SUPPORTS)
@Local(IJMS.class)
public class JMS implements IJMS {

   private final long timeout = 120000;

   @Resource(name = "jms.broker")
   private String connectionFactoryName="java:MQCF";
   @Resource(name = "jms.queue.request")
   private String requestQueueName="jca:/mq/jmsra/JCAAdminObject/RequestQueue";
   @Resource(name = "jms.queue.reply")
   private String replyQueueName="jca:/mq/jmsra/JCAAdminObject/ReplyQueue";

   protected Logger log = Logger.getLogger(this.getClass());

   @Override
   @TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRES_NEW)
   public String putMessage(String message) throws IJMSException {

      if (log.isDebugEnabled()) {
         log.debug("putMessage (" + message + ")");
      }

      if (message == null) {
         ExceptionUtils.exception(new IJMSException(IJMSException.REQUEST_MESSAGE_CANNOT_BE_NULL), log);
      }

      String messageId = null;

      QueueConnectionFactory connectionFactory = null;
      QueueConnection connection = null;
      QueueSession session = null;

      try {
         Context jndiContext = new InitialContext();
         connectionFactory = (QueueConnectionFactory) jndiContext.lookup(connectionFactoryName);
         Queue requestQueue = (Queue) jndiContext.lookup(requestQueueName);

         connection = connectionFactory.createQueueConnection();
         connection.start();

         session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

         QueueSender sender = session.createSender(requestQueue);
         sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

         TextMessage textMessage = session.createTextMessage();
         textMessage.setText(message);

         sender.send(textMessage);

         // Use our own correlation id instead of JMSCorrelationID
         // messageId = textMessage.getJMSMessageID();
         messageId = XMLRequestResponseHelper.getRequestIDFromXMLRequest(message);

         sender.close();
         session.close();
         connection.close();
         connection = null;

      } catch (JMSException e) {
         // Pass the exception back to the caller
         ExceptionUtils.exception(new IJMSException(e), log);

      } catch (NamingException e) {
         // Pass the exception back to the caller
         ExceptionUtils.exception(new IJMSException(e), log);

      } finally {
         // Ensure that the Connection always gets closed
         if (connection != null) {
            try {
               connection.close();
            } catch (JMSException e) {
               ExceptionUtils.exception(new IJMSException(e), log);
            }
         }
      }

      if (log.isDebugEnabled()) {
         log.debug("messageId=" + messageId);
      }
      return messageId;

   }


When executing it, i get the following error in the jboss logs
Code:

javax.ejb.EJBException: java.lang.ClassCastException: com.ibm.mq.connector.outbound.ConnectionFactoryImpl cannot be cast to javax.jms.QueueConnectionFactory org.eib.apca2.eai_interface.fpk.exception.EAIException: javax.ejb.EJBException: java.lang.ClassCastException: com.ibm.mq.connector.outbound.ConnectionFactoryImpl cannot be cast to javax.jms.QueueConnectionFactory
        at org.eib.apca2.eai_interface.fpk.session_bean.AbstractEAI.request(AbstractEAI.java:62)
        at org.eib.apca2.eai_interface.fpk.session_bean.CachingEAI.request(CachingEAI.java:97)
        at org.eib.apca2.eai_interface.fpk.session_bean.AbstractEAI.request(AbstractEAI.java:70)
        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:597)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)


... I understand the reason, but I don't know how to fix it. It's not clear for me where to make the difference between the JMS part and the MQ part.

Could some please help me ??
Thanks a lot !!!!!!!!!!!!

Octave
Back to top
View user's profile Send private message
anilit99
PostPosted: Wed Aug 05, 2009 7:33 am    Post subject: Reply with quote

Voyager

Joined: 28 May 2009
Posts: 75
Location: London, UK

Code:
<mbean code="org.jboss.resource.deployment.AdminObject" name="jca.wmq:name=RequestQueue">


can you replace the above line with this :
Code:
    <mbean code="org.jboss.resource.deployment.AdminObject" name="jboss.jca:service=WASDestination, name= RequestQueue">

_________________
"I almost care !"
Back to top
View user's profile Send private message
hsq125
PostPosted: Wed Aug 05, 2009 7:55 am    Post subject: Reply with quote

Newbie

Joined: 05 Aug 2009
Posts: 2

Thank you for your response ... mmmh I always get the same error.

Here is the logs that JBoss 5 generates when I deploy my MQ resource adapater, maybe it can help ...

Code:

17:55:23,391 INFO  [ConnectionFactoryBindingService] Unbound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=MQCF' from JNDI name 'java:MQCF'
17:55:23,413 INFO  [AdminObject] Unbound admin object at 'jca:/mq/jmsra/JCAAdminObject/ReplyQueue'
17:55:23,419 INFO  [AdminObject] Unbound admin object at 'jca:/mq/jmsra/JCAAdminObject/RequestQueue'
17:55:23,578 INFO  [AdminObject] Bound admin object 'com.ibm.mq.connector.outbound.MQQueueProxy' at 'jca:/mq/jmsra/JCAAdminObject/RequestQueue'
17:55:23,611 INFO  [AdminObject] Bound admin object 'com.ibm.mq.connector.outbound.MQQueueProxy' at 'jca:/mq/jmsra/JCAAdminObject/ReplyQueue'
17:55:23,653 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=MQCF' to JNDI name 'java:MQCF'
Back to top
View user's profile Send private message
anilit99
PostPosted: Wed Aug 05, 2009 8:04 am    Post subject: Reply with quote

Voyager

Joined: 28 May 2009
Posts: 75
Location: London, UK

I believe the code snippet has nothing to do with your error. I accidentally submitted the post, before I could say that it is the recommended way to define the admin object.
_________________
"I almost care !"
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » IBM MQ Java / JMS » How to set TARGCLIENT property ?
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.