You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2008/11/07 15:36:27 UTC

svn commit: r712137 - in /webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms: JMSMessageReceiver.java JMSSender.java JMSUtils.java

Author: veithen
Date: Fri Nov  7 06:36:19 2008
New Revision: 712137

URL: http://svn.apache.org/viewvc?rev=712137&view=rev
Log:
JMS transport: eliminated some duplicate code and added a review comment.

Modified:
    webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
    webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
    webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java

Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=712137&r1=712136&r2=712137&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original)
+++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java Fri Nov  7 06:36:19 2008
@@ -101,13 +101,7 @@
 
         // update transport level metrics
         try {
-            if (message instanceof BytesMessage) {
-                metrics.incrementBytesReceived((JMSUtils.getBodyLength((BytesMessage) message)));
-            } else if (message instanceof TextMessage) {
-                metrics.incrementBytesReceived(((TextMessage) message).getText().getBytes().length);
-            } else {
-                handleException("Unsupported JMS message type : " + message.getClass().getName());
-            }
+            metrics.incrementBytesReceived(JMSUtils.getMessageSize(message));
         } catch (JMSException e) {
             log.warn("Error reading JMS message size to update transport metrics", e);
         }

Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=712137&r1=712136&r2=712137&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java (original)
+++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java Fri Nov  7 06:36:19 2008
@@ -241,15 +241,7 @@
 
                     metrics.incrementMessagesSent();
                     try {
-                        if (message instanceof BytesMessage) {
-                            metrics.incrementBytesSent(JMSUtils.getBodyLength((BytesMessage) message));
-                        } else if (message instanceof TextMessage) {
-                            metrics.incrementBytesSent((
-                                (TextMessage) message).getText().getBytes().length);
-                        } else {
-                            handleException("Unsupported JMS message type : " +
-                                message.getClass().getName());
-                        }
+                        metrics.incrementBytesSent(JMSUtils.getMessageSize(message));
                     } catch (JMSException e) {
                         log.warn("Error reading JMS message size to update transport metrics", e);
                     }
@@ -335,15 +327,7 @@
                 // update transport level metrics
                 metrics.incrementMessagesReceived();                
                 try {
-                    if (reply instanceof BytesMessage) {
-                        metrics.incrementBytesReceived(JMSUtils.getBodyLength((BytesMessage) reply));
-                    } else if (reply instanceof TextMessage) {
-                        metrics.incrementBytesReceived((
-                            (TextMessage) reply).getText().getBytes().length);
-                    } else {
-                        handleException("Unsupported JMS message type : " +
-                            reply.getClass().getName());
-                    }
+                    metrics.incrementBytesReceived(JMSUtils.getMessageSize(reply));
                 } catch (JMSException e) {
                     log.warn("Error reading JMS message size to update transport metrics", e);
                 }

Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java?rev=712137&r1=712136&r2=712137&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java (original)
+++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java Fri Nov  7 06:36:19 2008
@@ -745,6 +745,20 @@
         return length;
     }
     
+    public static long getMessageSize(Message message) throws JMSException {
+        if (message instanceof BytesMessage) {
+            return JMSUtils.getBodyLength((BytesMessage) message);
+        } else if (message instanceof TextMessage) {
+            // TODO: Converting the whole message to a byte array is too much overhead just to determine the message size.
+            //       Anyway, the result is not accurate since we don't know what encoding the JMS provider uses.
+            return ((TextMessage) message).getText().getBytes().length;
+        } else {
+            log.warn("Can't determine size of JMS message; unsupported message type : "
+                    + message.getClass().getName());
+            return 0;
+        }
+    }
+    
     public static <T> T lookup(Context context, Class<T> clazz, String name)
         throws NamingException {
         



Re: svn commit: r712137 - in /webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms: JMSMessageReceiver.java JMSSender.java JMSUtils.java

Posted by Andreas Veithen <an...@gmail.com>.
On Fri, Nov 7, 2008 at 16:32, Senaka Fernando <se...@gmail.com> wrote:

> Well I'm not quite satisfied with this. Can you exactly say that 1 character
> = 1 byte, or shouldn't this be some weighted value?  This is my point: how
> could you compare the load of BytesMessages vs TextMessages using this
> scheme? or doesn't such a comparison make sense?

I think it's not possible to compare BytesMessage vs TextMessage load
in a precise way, because that depends pretty much on how the
messaging provider handles these messages. Ideally we should have
separate metrics for the two types of messages, but the metrics
collection framework is not flexible enough for this.

Andreas

Re: svn commit: r712137 - in /webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms: JMSMessageReceiver.java JMSSender.java JMSUtils.java

Posted by Senaka Fernando <se...@gmail.com>.
On Fri, Nov 7, 2008 at 8:54 PM, Andreas Veithen
<an...@gmail.com>wrote:

> I think that the absolute values of the bytesSent and bytesReceived
> metrics are actually not so important. What is more important is the
> ability to monitor their evolution over time to identify trends or
> peaks. E.g. if you have a system where you observe a steady increase
> of volume, you might want to extrapolate and carry out some load
> testing to make sure that it will support the expected future
> workload.


+1, it makes sense.

>
>
> I put the review comment in the code to give people a chance to think
> about it and maybe come up with some ideas. Personally I think that
> for TextMessages, we should simply make the assumption that 1
> character = 1 byte. In many cases, that will underestimate the message
> size, but it still provides sufficiently accurate information without
> causing overhead.


Well I'm not quite satisfied with this. Can you exactly say that 1 character
= 1 byte, or shouldn't this be some weighted value?  This is my point: how
could you compare the load of BytesMessages vs TextMessages using this
scheme? or doesn't such a comparison make sense?

Regards,
Senaka

>
>
> Andreas
>
> On Fri, Nov 7, 2008 at 15:40, Senaka Fernando <se...@gmail.com> wrote:
> > Hi Andreas,
> >
> > I had another question asked on this on the list. That is, "how can you
> > express the size of a message exchanged, just by counting the bytes that
> are
> > required to represent the payload?". I believe that this is only a rough
> > estimate.
> >
> > Regards,
> > Senaka
> >
> > On Fri, Nov 7, 2008 at 8:06 PM, <ve...@apache.org> wrote:
> >
> >> Author: veithen
> >> Date: Fri Nov  7 06:36:19 2008
> >> New Revision: 712137
> >>
> >> URL: http://svn.apache.org/viewvc?rev=712137&view=rev
> >> Log:
> >> JMS transport: eliminated some duplicate code and added a review
> comment.
> >>
> >> Modified:
> >>
> >>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> >>
> >>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> >>
> >>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> >>
> >> Modified:
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=712137&r1=712136&r2=712137&view=diff
> >>
> >>
> ==============================================================================
> >> ---
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> >> (original)
> >> +++
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> >> Fri Nov  7 06:36:19 2008
> >> @@ -101,13 +101,7 @@
> >>
> >>         // update transport level metrics
> >>         try {
> >> -            if (message instanceof BytesMessage) {
> >> -
> >>  metrics.incrementBytesReceived((JMSUtils.getBodyLength((BytesMessage)
> >> message)));
> >> -            } else if (message instanceof TextMessage) {
> >> -                metrics.incrementBytesReceived(((TextMessage)
> >> message).getText().getBytes().length);
> >> -            } else {
> >> -                handleException("Unsupported JMS message type : " +
> >> message.getClass().getName());
> >> -            }
> >> +
> >>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(message));
> >>         } catch (JMSException e) {
> >>             log.warn("Error reading JMS message size to update transport
> >> metrics", e);
> >>         }
> >>
> >> Modified:
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=712137&r1=712136&r2=712137&view=diff
> >>
> >>
> ==============================================================================
> >> ---
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> >> (original)
> >> +++
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> >> Fri Nov  7 06:36:19 2008
> >> @@ -241,15 +241,7 @@
> >>
> >>                     metrics.incrementMessagesSent();
> >>                     try {
> >> -                        if (message instanceof BytesMessage) {
> >> -
> >>  metrics.incrementBytesSent(JMSUtils.getBodyLength((BytesMessage)
> message));
> >> -                        } else if (message instanceof TextMessage) {
> >> -                            metrics.incrementBytesSent((
> >> -                                (TextMessage)
> >> message).getText().getBytes().length);
> >> -                        } else {
> >> -                            handleException("Unsupported JMS message
> type
> >> : " +
> >> -                                message.getClass().getName());
> >> -                        }
> >> +
> >>  metrics.incrementBytesSent(JMSUtils.getMessageSize(message));
> >>                     } catch (JMSException e) {
> >>                         log.warn("Error reading JMS message size to
> update
> >> transport metrics", e);
> >>                     }
> >> @@ -335,15 +327,7 @@
> >>                 // update transport level metrics
> >>                 metrics.incrementMessagesReceived();
> >>                 try {
> >> -                    if (reply instanceof BytesMessage) {
> >> -
> >>  metrics.incrementBytesReceived(JMSUtils.getBodyLength((BytesMessage)
> >> reply));
> >> -                    } else if (reply instanceof TextMessage) {
> >> -                        metrics.incrementBytesReceived((
> >> -                            (TextMessage)
> >> reply).getText().getBytes().length);
> >> -                    } else {
> >> -                        handleException("Unsupported JMS message type :
> "
> >> +
> >> -                            reply.getClass().getName());
> >> -                    }
> >> +
> >>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(reply));
> >>                 } catch (JMSException e) {
> >>                     log.warn("Error reading JMS message size to update
> >> transport metrics", e);
> >>                 }
> >>
> >> Modified:
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> >> URL:
> >>
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java?rev=712137&r1=712136&r2=712137&view=diff
> >>
> >>
> ==============================================================================
> >> ---
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> >> (original)
> >> +++
> >>
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> >> Fri Nov  7 06:36:19 2008
> >> @@ -745,6 +745,20 @@
> >>         return length;
> >>     }
> >>
> >> +    public static long getMessageSize(Message message) throws
> JMSException
> >> {
> >> +        if (message instanceof BytesMessage) {
> >> +            return JMSUtils.getBodyLength((BytesMessage) message);
> >> +        } else if (message instanceof TextMessage) {
> >> +            // TODO: Converting the whole message to a byte array is
> too
> >> much overhead just to determine the message size.
> >> +            //       Anyway, the result is not accurate since we don't
> >> know what encoding the JMS provider uses.
> >> +            return ((TextMessage) message).getText().getBytes().length;
> >> +        } else {
> >> +            log.warn("Can't determine size of JMS message; unsupported
> >> message type : "
> >> +                    + message.getClass().getName());
> >> +            return 0;
> >> +        }
> >> +    }
> >> +
> >>     public static <T> T lookup(Context context, Class<T> clazz, String
> >> name)
> >>         throws NamingException {
> >>
> >>
> >>
> >>
> >
>

Re: svn commit: r712137 - in /webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms: JMSMessageReceiver.java JMSSender.java JMSUtils.java

Posted by Andreas Veithen <an...@gmail.com>.
I think that the absolute values of the bytesSent and bytesReceived
metrics are actually not so important. What is more important is the
ability to monitor their evolution over time to identify trends or
peaks. E.g. if you have a system where you observe a steady increase
of volume, you might want to extrapolate and carry out some load
testing to make sure that it will support the expected future
workload.

I put the review comment in the code to give people a chance to think
about it and maybe come up with some ideas. Personally I think that
for TextMessages, we should simply make the assumption that 1
character = 1 byte. In many cases, that will underestimate the message
size, but it still provides sufficiently accurate information without
causing overhead.

Andreas

On Fri, Nov 7, 2008 at 15:40, Senaka Fernando <se...@gmail.com> wrote:
> Hi Andreas,
>
> I had another question asked on this on the list. That is, "how can you
> express the size of a message exchanged, just by counting the bytes that are
> required to represent the payload?". I believe that this is only a rough
> estimate.
>
> Regards,
> Senaka
>
> On Fri, Nov 7, 2008 at 8:06 PM, <ve...@apache.org> wrote:
>
>> Author: veithen
>> Date: Fri Nov  7 06:36:19 2008
>> New Revision: 712137
>>
>> URL: http://svn.apache.org/viewvc?rev=712137&view=rev
>> Log:
>> JMS transport: eliminated some duplicate code and added a review comment.
>>
>> Modified:
>>
>>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>>
>>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
>>
>>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
>>
>> Modified:
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>> URL:
>> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=712137&r1=712136&r2=712137&view=diff
>>
>> ==============================================================================
>> ---
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>> (original)
>> +++
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>> Fri Nov  7 06:36:19 2008
>> @@ -101,13 +101,7 @@
>>
>>         // update transport level metrics
>>         try {
>> -            if (message instanceof BytesMessage) {
>> -
>>  metrics.incrementBytesReceived((JMSUtils.getBodyLength((BytesMessage)
>> message)));
>> -            } else if (message instanceof TextMessage) {
>> -                metrics.incrementBytesReceived(((TextMessage)
>> message).getText().getBytes().length);
>> -            } else {
>> -                handleException("Unsupported JMS message type : " +
>> message.getClass().getName());
>> -            }
>> +
>>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(message));
>>         } catch (JMSException e) {
>>             log.warn("Error reading JMS message size to update transport
>> metrics", e);
>>         }
>>
>> Modified:
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
>> URL:
>> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=712137&r1=712136&r2=712137&view=diff
>>
>> ==============================================================================
>> ---
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
>> (original)
>> +++
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
>> Fri Nov  7 06:36:19 2008
>> @@ -241,15 +241,7 @@
>>
>>                     metrics.incrementMessagesSent();
>>                     try {
>> -                        if (message instanceof BytesMessage) {
>> -
>>  metrics.incrementBytesSent(JMSUtils.getBodyLength((BytesMessage) message));
>> -                        } else if (message instanceof TextMessage) {
>> -                            metrics.incrementBytesSent((
>> -                                (TextMessage)
>> message).getText().getBytes().length);
>> -                        } else {
>> -                            handleException("Unsupported JMS message type
>> : " +
>> -                                message.getClass().getName());
>> -                        }
>> +
>>  metrics.incrementBytesSent(JMSUtils.getMessageSize(message));
>>                     } catch (JMSException e) {
>>                         log.warn("Error reading JMS message size to update
>> transport metrics", e);
>>                     }
>> @@ -335,15 +327,7 @@
>>                 // update transport level metrics
>>                 metrics.incrementMessagesReceived();
>>                 try {
>> -                    if (reply instanceof BytesMessage) {
>> -
>>  metrics.incrementBytesReceived(JMSUtils.getBodyLength((BytesMessage)
>> reply));
>> -                    } else if (reply instanceof TextMessage) {
>> -                        metrics.incrementBytesReceived((
>> -                            (TextMessage)
>> reply).getText().getBytes().length);
>> -                    } else {
>> -                        handleException("Unsupported JMS message type : "
>> +
>> -                            reply.getClass().getName());
>> -                    }
>> +
>>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(reply));
>>                 } catch (JMSException e) {
>>                     log.warn("Error reading JMS message size to update
>> transport metrics", e);
>>                 }
>>
>> Modified:
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
>> URL:
>> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java?rev=712137&r1=712136&r2=712137&view=diff
>>
>> ==============================================================================
>> ---
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
>> (original)
>> +++
>> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
>> Fri Nov  7 06:36:19 2008
>> @@ -745,6 +745,20 @@
>>         return length;
>>     }
>>
>> +    public static long getMessageSize(Message message) throws JMSException
>> {
>> +        if (message instanceof BytesMessage) {
>> +            return JMSUtils.getBodyLength((BytesMessage) message);
>> +        } else if (message instanceof TextMessage) {
>> +            // TODO: Converting the whole message to a byte array is too
>> much overhead just to determine the message size.
>> +            //       Anyway, the result is not accurate since we don't
>> know what encoding the JMS provider uses.
>> +            return ((TextMessage) message).getText().getBytes().length;
>> +        } else {
>> +            log.warn("Can't determine size of JMS message; unsupported
>> message type : "
>> +                    + message.getClass().getName());
>> +            return 0;
>> +        }
>> +    }
>> +
>>     public static <T> T lookup(Context context, Class<T> clazz, String
>> name)
>>         throws NamingException {
>>
>>
>>
>>
>

Re: svn commit: r712137 - in /webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms: JMSMessageReceiver.java JMSSender.java JMSUtils.java

Posted by Senaka Fernando <se...@gmail.com>.
Hi Andreas,

I had another question asked on this on the list. That is, "how can you
express the size of a message exchanged, just by counting the bytes that are
required to represent the payload?". I believe that this is only a rough
estimate.

Regards,
Senaka

On Fri, Nov 7, 2008 at 8:06 PM, <ve...@apache.org> wrote:

> Author: veithen
> Date: Fri Nov  7 06:36:19 2008
> New Revision: 712137
>
> URL: http://svn.apache.org/viewvc?rev=712137&view=rev
> Log:
> JMS transport: eliminated some duplicate code and added a review comment.
>
> Modified:
>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
>
>  webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
>
> Modified:
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> URL:
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java?rev=712137&r1=712136&r2=712137&view=diff
>
> ==============================================================================
> ---
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> (original)
> +++
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSMessageReceiver.java
> Fri Nov  7 06:36:19 2008
> @@ -101,13 +101,7 @@
>
>         // update transport level metrics
>         try {
> -            if (message instanceof BytesMessage) {
> -
>  metrics.incrementBytesReceived((JMSUtils.getBodyLength((BytesMessage)
> message)));
> -            } else if (message instanceof TextMessage) {
> -                metrics.incrementBytesReceived(((TextMessage)
> message).getText().getBytes().length);
> -            } else {
> -                handleException("Unsupported JMS message type : " +
> message.getClass().getName());
> -            }
> +
>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(message));
>         } catch (JMSException e) {
>             log.warn("Error reading JMS message size to update transport
> metrics", e);
>         }
>
> Modified:
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> URL:
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java?rev=712137&r1=712136&r2=712137&view=diff
>
> ==============================================================================
> ---
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> (original)
> +++
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSSender.java
> Fri Nov  7 06:36:19 2008
> @@ -241,15 +241,7 @@
>
>                     metrics.incrementMessagesSent();
>                     try {
> -                        if (message instanceof BytesMessage) {
> -
>  metrics.incrementBytesSent(JMSUtils.getBodyLength((BytesMessage) message));
> -                        } else if (message instanceof TextMessage) {
> -                            metrics.incrementBytesSent((
> -                                (TextMessage)
> message).getText().getBytes().length);
> -                        } else {
> -                            handleException("Unsupported JMS message type
> : " +
> -                                message.getClass().getName());
> -                        }
> +
>  metrics.incrementBytesSent(JMSUtils.getMessageSize(message));
>                     } catch (JMSException e) {
>                         log.warn("Error reading JMS message size to update
> transport metrics", e);
>                     }
> @@ -335,15 +327,7 @@
>                 // update transport level metrics
>                 metrics.incrementMessagesReceived();
>                 try {
> -                    if (reply instanceof BytesMessage) {
> -
>  metrics.incrementBytesReceived(JMSUtils.getBodyLength((BytesMessage)
> reply));
> -                    } else if (reply instanceof TextMessage) {
> -                        metrics.incrementBytesReceived((
> -                            (TextMessage)
> reply).getText().getBytes().length);
> -                    } else {
> -                        handleException("Unsupported JMS message type : "
> +
> -                            reply.getClass().getName());
> -                    }
> +
>  metrics.incrementBytesReceived(JMSUtils.getMessageSize(reply));
>                 } catch (JMSException e) {
>                     log.warn("Error reading JMS message size to update
> transport metrics", e);
>                 }
>
> Modified:
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> URL:
> http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java?rev=712137&r1=712136&r2=712137&view=diff
>
> ==============================================================================
> ---
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> (original)
> +++
> webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSUtils.java
> Fri Nov  7 06:36:19 2008
> @@ -745,6 +745,20 @@
>         return length;
>     }
>
> +    public static long getMessageSize(Message message) throws JMSException
> {
> +        if (message instanceof BytesMessage) {
> +            return JMSUtils.getBodyLength((BytesMessage) message);
> +        } else if (message instanceof TextMessage) {
> +            // TODO: Converting the whole message to a byte array is too
> much overhead just to determine the message size.
> +            //       Anyway, the result is not accurate since we don't
> know what encoding the JMS provider uses.
> +            return ((TextMessage) message).getText().getBytes().length;
> +        } else {
> +            log.warn("Can't determine size of JMS message; unsupported
> message type : "
> +                    + message.getClass().getName());
> +            return 0;
> +        }
> +    }
> +
>     public static <T> T lookup(Context context, Class<T> clazz, String
> name)
>         throws NamingException {
>
>
>
>