You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by wh...@apache.org on 2002/09/25 14:38:43 UTC

cvs commit: xml-axis-wsif/java/test/jms JmsTest.java Jms.wsdl

whitlock    2002/09/25 05:38:43

  Modified:    java/src/org/apache/wsif/util/jms WSIFJMSDestination.java
               java/test/jms JmsTest.java Jms.wsdl
  Log:
  Fix and test JMS synchronous timeouts
  
  Revision  Changes    Path
  1.8       +37 -15    xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSDestination.java
  
  Index: WSIFJMSDestination.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/util/jms/WSIFJMSDestination.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- WSIFJMSDestination.java	18 Sep 2002 15:38:19 -0000	1.7
  +++ WSIFJMSDestination.java	25 Sep 2002 12:38:43 -0000	1.8
  @@ -141,7 +141,8 @@
   
           try {
               connection = finder.getFactory().createQueueConnection();
  -            session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  +            session =
  +                connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
   
               Destination initDest = finder.getInitialDestination();
               if (initDest != null && altDestName != null)
  @@ -158,7 +159,7 @@
               connection.start();
   
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
           if (Trc.ON)
  @@ -186,7 +187,7 @@
               if (cnnctn != null)
                   cnnctn.close();
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
           Trc.exit();
  @@ -229,7 +230,7 @@
               Trc.exit(s);
               return s;
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
       }
  @@ -263,7 +264,7 @@
               Trc.exit(s);
               return s;
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
       }
  @@ -299,7 +300,7 @@
               msgId = msg.getJMSMessageID();
   
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           } finally { // If properties were set, trash the sender so we get the default props next time.
               if (propsSet)
  @@ -338,7 +339,7 @@
                       "Reply message was not a TextMessage:msg="
                           + (msg == null ? "null" : msg.toString()));
           } catch (JMSException e) {
  -        	Trc.exception(e);
  +            Trc.exception(e);
               throw WSIFJMSConstants.ToWsifException(e);
           }
           Trc.exit(s);
  @@ -367,15 +368,21 @@
   
               msg = rec.receive(timeout);
   
  +            if (msg == null)
  +                throw new WSIFException(
  +                    "Receive timed out on JMS queue "
  +                        + readQ.getQueueName()
  +                        + ", timeout "
  +                        + timeout);
           } catch (JMSException e) {
  -        	Trc.exception(e);
  +            Trc.exception(e);
               throw WSIFJMSConstants.ToWsifException(e);
           } finally {
               try {
                   if (rec != null)
                       rec.close();
               } catch (Exception ignored) {
  -	        	Trc.ignoredException(ignored);
  +                Trc.ignoredException(ignored);
               }
           }
   
  @@ -395,11 +402,12 @@
               if (syncTempQueue == null)
                   syncTempQueue = session.createTemporaryQueue();
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
   
  -        readQ = syncTempQueue; // So we don't overwrite readQ if there was an error.
  +        readQ = syncTempQueue;
  +        // So we don't overwrite readQ if there was an error.
           replyToName = null;
           Trc.exit();
       }
  @@ -442,7 +450,7 @@
           Trc.entry(this, b);
           areWeClosed();
           if (asyncMode != b) {
  -           asyncMode = b;
  +            asyncMode = b;
           }
           Trc.exit();
       }
  @@ -522,16 +530,30 @@
   
           try {
               if (msgType
  -                == org.apache.wsif.wsdl.extensions.jms.JMSConstants.MESSAGE_TYPE_OBJECTMESSAGE)
  +                == org
  +                    .apache
  +                    .wsif
  +                    .wsdl
  +                    .extensions
  +                    .jms
  +                    .JMSConstants
  +                    .MESSAGE_TYPE_OBJECTMESSAGE)
                   jmsMsg = session.createObjectMessage();
               else if (
                   msgType
  -                    == org.apache.wsif.wsdl.extensions.jms.JMSConstants.MESSAGE_TYPE_TEXTMESSAGE)
  +                    == org
  +                        .apache
  +                        .wsif
  +                        .wsdl
  +                        .extensions
  +                        .jms
  +                        .JMSConstants
  +                        .MESSAGE_TYPE_TEXTMESSAGE)
                   jmsMsg = session.createTextMessage();
               else
                   throw new WSIFException("Unable to support message type");
           } catch (JMSException je) {
  -        	Trc.exception(je);
  +            Trc.exception(je);
               throw WSIFJMSConstants.ToWsifException(je);
           }
           Trc.exit(jmsMsg);
  
  
  
  1.10      +78 -14    xml-axis-wsif/java/test/jms/JmsTest.java
  
  Index: JmsTest.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/jms/JmsTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- JmsTest.java	16 Sep 2002 08:18:56 -0000	1.9
  +++ JmsTest.java	25 Sep 2002 12:38:43 -0000	1.10
  @@ -58,6 +58,8 @@
   package jms;
   
   import java.rmi.RemoteException;
  +import java.text.DateFormat;
  +import java.util.Date;
   
   import javax.jms.DeliveryMode;
   import javax.xml.namespace.QName;
  @@ -68,7 +70,6 @@
   import org.apache.wsif.WSIFException;
   import org.apache.wsif.WSIFService;
   import org.apache.wsif.WSIFServiceFactory;
  -import org.apache.wsif.util.WSIFPluggableProviders;
   import util.AddressUtility;
   import util.TestUtilities;
   
  @@ -106,6 +107,7 @@
       private final static String  ABPV     = "address and binding property values";
       private final static String  UPV      = "user properties values";
       private final static String  OPV      = "overiding property values";
  +    private final static String  TO       = "timeout";
   
       private interface AddressBookWithAttrs extends AddressBook {
           public void addEntry(String name, Address address) throws RemoteException;
  @@ -158,6 +160,8 @@
           TestUtilities.setUpExtensionsAndProviders();
       }
   
  +    /* *************** Start of SOAP tests ****************** */
  +    
       public void testSoapDefault() {
           doit("default", SOAP, REPLYTOQ, 3, NPERS, 0, null);
       }
  @@ -307,6 +311,12 @@
   //        doit("bad-pvnoname", SOAP, REPLYTOQ, 3, NPERS, 0, APV);
   //    }
   
  +    public void testSoapTimeout() {
  +        doit("timeout", SOAP, REPLYTOQ, 3, NPERS, 0, TO);
  +    }
  +
  +    /* ********** Start of AXIS tests ************ */
  +    
       public void testAxisDefault() {
           doit("default", AXIS, REPLYTOQ, 3, NPERS, 0, null);
       }
  @@ -443,6 +453,11 @@
           doit("bindpv", AXIS, REPLYTOQ, 3, PERS, 0, BPV);
       }
   
  +    public void testAxisTimeout() {
  +        doit("timeout", AXIS, REPLYTOQ, 3, NPERS, 0, TO);
  +    }
  +
  +    /* ********** Start of Native JMS tests ************ */
   
   	public void testNativeJMSDefault() {
   		doit("NJdefault", NJMS, REPLYTOQ, 3, NPERS, 0, null);
  @@ -544,6 +559,10 @@
   		doit("NJbindpv", NJMS, REPLYTOQ, 3, PERS, 0, BPV);
   	}
   
  +    public void testNativeJMSTimeout() {
  +        doit("NJtimeout", NJMS, REPLYTOQ, 3, NPERS, 0, TO);
  +    }
  +
       public void testJavaNoAttrs() {
           doit("java-noattrs", JAVA, null, 3, NPERS, 0, null);
       }
  @@ -556,6 +575,7 @@
           int deliveryMode,
           long timeToLive,
           String cmd) {
  +        	
           if (!TestUtilities.areWeTesting("jms"))
               return;
   
  @@ -580,19 +600,23 @@
               AddressBookWithAttrs stub =
                   (AddressBookWithAttrs) service.getStub(portName, AddressBookWithAttrs.class);
   
  -            if (cmd == null)
  -                stub.addEntry(
  -                    name,
  -                    addr,
  -                    priority,
  -                    replyTo,
  -                    deliveryMode,
  -                    timeToLive);
  -            else
  -                doProperties(stub, cmd, deliveryMode);
  -
  -            Address resp = stub.getAddressFromName(name, deliveryMode);
  -            assertTrue(new AddressUtility(resp).equals(addr));
  +            if ("timeout".equals(cmd))
  +                doTimeout(stub, deliveryMode);
  +            else {
  +                if (cmd == null)
  +                    stub.addEntry(
  +                        name,
  +                        addr,
  +                        priority,
  +                        replyTo,
  +                        deliveryMode,
  +                        timeToLive);
  +                else
  +                    doProperties(stub, cmd, deliveryMode);
  +
  +                Address resp = stub.getAddressFromName(name, deliveryMode);
  +                assertTrue(new AddressUtility(resp).equals(addr));
  +            }
               assertTrue(!ExceptionExpected);
           } catch (Exception e) {
               System.err.println("JmsTest(" + portName + ") caught exception " + e);
  @@ -639,4 +663,44 @@
           } else
               assertTrue(false);
       }
  +
  +    /**
  +     * This test only tests out synchronous timeouts. Asynchronous timeouts
  +     * are the responsibility of the application since it is the application
  +     * that does the listen or receive for the response message. The asynchronous
  +     * timeout in wsif.properties is also used by the correlation service,
  +     * but this is tested in a separate unit test.
  +     */
  +    private void doTimeout(
  +        AddressBookWithAttrs stub,
  +        int deliveryMode)
  +        throws Exception {
  +
  +        boolean caught = false;
  +        Date first = new Date();
  +        try {
  +            stub.addEntry(name, addr, deliveryMode);
  +        } catch (WSIFException we) {
  +            System.out.println("Caught expected " + we);
  +            caught = true;
  +        }
  +        assertTrue(caught);
  +        Date second = new Date();
  +
  +        DateFormat df = DateFormat.getDateTimeInstance();
  +        System.out.println("first date was " + df.format(first));
  +        System.out.println("second date was " + df.format(second));
  +
  +        // getTime() returns milliseconds.
  +        long firstTime = first.getTime();
  +        long secondTime = second.getTime();
  +        System.out.println("first time was " + firstTime);
  +        System.out.println("second time was " + secondTime);
  +
  +        // Default synchronous timeout is 10 seconds
  +        assertTrue(firstTime<secondTime);
  +        assertTrue((secondTime-firstTime)>10000);
  +        assertTrue((secondTime-firstTime)<20000);
  +    }
  +
   }
  
  
  
  1.6       +14 -0     xml-axis-wsif/java/test/jms/Jms.wsdl
  
  Index: Jms.wsdl
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/test/jms/Jms.wsdl,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Jms.wsdl	25 Jun 2002 08:35:07 -0000	1.5
  +++ Jms.wsdl	25 Sep 2002 12:38:43 -0000	1.6
  @@ -645,6 +645,13 @@
           <jms:propertyValue name="JMSReplyTo" type="xsd:string" value="trash"/>
         </jms:address>
       </port>
  +    <port name="timeout" binding="tns:SOAPJmsBinding">
  +      <jms:address jmsProviderDestinationName="SYSTEM.DEAD.LETTER.QUEUE"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="WSIFSampleQCF"
  +                   initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file:///JNDI-Directory"/>
  +    </port>
       <port name="NJdefault" binding="tns:NativeJmsBinding">
         <jms:address jmsVendorURI="http://ibm.com/ns/mqseries"
                      jndiDestinationName="NativeJmsRequestQueue"
  @@ -848,6 +855,13 @@
                      jndiProviderURL="file://C:/JNDI-Directory">
           <jms:propertyValue name="JMSReplyTo" type="xsd:string" value="trash"/>
         </jms:address>
  +    </port>
  +    <port name="NJtimeout" binding="tns:NativeJmsBinding">
  +      <jms:address jmsProviderDestinationName="SYSTEM.DEAD.LETTER.QUEUE"
  +                   destinationStyle="queue"
  +                   jndiConnectionFactoryName="WSIFSampleQCF"
  +                   initialContextFactory="com.sun.jndi.fscontext.RefFSContextFactory"
  +                   jndiProviderURL="file:///JNDI-Directory"/>
       </port>
     </service>