You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "Li, Zhenge" <zh...@cgi.com> on 2009/04/22 13:59:02 UTC

RE: How to monitor SOAP messages in the Client without changing the server?

SoapMonitor module can work on client side too. You just need to modify
src/org/apache/axis2/handlers/soapmonitor/SOAPMonitorHandler.java to
switch IN with OUT for client side monitoring.  You can deploy it the
same way as you do with any other modules and change you client to use
it - I inserted soapmonitorPhase into my client side axis2.xml. 

 

-richard 

...

if (messageContext.getFLOW() == MessageContext.IN_FLOW) {

    id = getMessageId(messageContext);

    // show soap message inside the 'soap response' pane in the applet

    type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_RESPONSE);

    ref = messageContext.getFrom();

} else if (messageContext.getFLOW() == MessageContext.OUT_FLOW) {

    id = assignMessageId(messageContext);

    // show soap message inside the 'soap request' pane in the applet

    type = new Integer(SOAPMonitorConstants.SOAP_MONITOR_REQUEST);

    ref = messageContext.getTo();

} else if (messageContext.getFLOW() == MessageContext.IN_FAULT_FLOW) {

...

 

<axisconfig name="AxisJava2.0">

    <module ref="soapmonitor"/>

 

...             

    <phaseOrder type="InFlow">

...

        <phase name="soapmonitorPhase"/>

        <phase name="RMPhase"/

...

    <phaseOrder type="OutFlow">

        <!--      user can add his own phases to this area  -->

        <phase name="soapmonitorPhase"/>

        <phase name="OperationOutPhase"/>

        <!--system predefined phase-->

 

        <phase name="soapmonitorPhase"/>

        <phase name="RMPhase"/>

________________________________

From: Joe Smithian [mailto:joe.smithian@gmail.com] 
Sent: April 21, 2009 9:43 PM
To: axis-user@ws.apache.org
Subject: Re: How to monitor SOAP messages in the Client without changing
the server?

 

1- I already have log4j configured in my client and as I said in my
original message I can see the soap request and response messages in the
log files, what I need is to display them in a  GUI windowo in
real-time. Can logging.mar be used for this purpose?

2- I copied logging.mar to the Axis2 ./repository/modules folder and
changed 'logging' to 'sample-logging' in my client: 
stub._getServiceClient().engageModule("sample-logging"); and this time I
got this error:

Did not find the desired phase 'loggingPhase' while deploying handler
'InFlowLogHandler'.
 and these are the log4j messages:

DEBUG AWT-EventQueue-0 org.apache.axis2.engine.Phase - Handler
RequestURIOperationDispatcher added to Phase Dispatch
DEBUG AWT-EventQueue-0 org.apache.axis2.engine.Phase - Handler
SOAPMessageBodyBasedDispatcher added to Phase Dispatch
DEBUG AWT-EventQueue-0 org.apache.axis2.engine.Phase - Handler
HTTPLocationBasedDispatcher added to Phase Dispatch
INFO AWT-EventQueue-0 org.apache.axis2.deployment.util.Utils - Created
temporary file : /tmp/_axis2/axis2428751690649774027logging.mar
DEBUG AWT-EventQueue-0 org.apache.axiom.om.util.StAXUtils -
XMLStreamReader is com.ctc.wstx.sr.ValidatingStreamReader
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
getBundle(org.apache.axis2,org.apache.axis2.i18n,resource,null,...)
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
loadBundle: Ignoring MissingResourceException: Can't find bundle for
base name org.apache.axis2.resource, locale en_US
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
Created org.apache.axis2.i18n.resource, linked to parent null
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
getBundle(org.apache.axis2,org.apache.axis2.i18n,resource,null,...)
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
org.apache.axis2.i18n.resource::handleGetObject(addingnewmodule)
DEBUG AWT-EventQueue-0 org.apache.axis2.deployment.DeploymentEngine -
Adding new module
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
org.apache.axis2.i18n.resource::handleGetObject(deployeingmodule)
INFO AWT-EventQueue-0 org.apache.axis2.deployment.ModuleDeployer -
Deploying module: sample-logging
DEBUG AWT-EventQueue-0 org.apache.axis2.i18n.ProjectResourceBundle -
org.apache.axis2.i18n.resource::handleGetObject(invalidphase)

Thanks again for your help.

Joe





On Mon, Apr 20, 2009 at 6:48 AM, Dennis Sosnoski <dm...@sosnoski.com>
wrote:

I don't think that adding it to the manifest will work, but if you
explicitly include the .mar in your runtime classpath that should do it
(assuming the .mar has been properly constructed).

You'll need to have logging enabled in your client in order to make use
of the logging module. To do this, create a file named log4j.properties
in any convenient location, then add the directory of that file to your
runtime classpath. The directory needs to precede the Axis2 jars or any
other jars that might have their own log4j.properties. To work with the
logging module you'll need to have something like the following for the
content:

# direct log messages to stdout #
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L
- %m%n

# change logging level here.
log4j.rootLogger=info, stdout

If you still have problems with loading the logging module you can try
changing "info" in the above line to "debug" and see if the resulting
output gives you any hints as to why the logging module is failing to
load.

 - Dennis


Joe Smithian wrote:

Hi Dennis,

Thanks for your suggestions. I built logging.mar in my
axis2/samples/userguide using 'ant generate.module' then copied it to my
client's lib directory and added it to it's manifest file, recompiled
and ran the client, still gives the error: "Unable to engage module :
logging".

Any idea what might be wrong?

Thanks again.

Joe.



On Sat, Apr 18, 2009 at 2:12 AM, Dennis Sosnoski <dms@sosnoski.com
<ma...@sosnoski.com>> wrote:

   Hi Joe,

   Try including the logging.mar in your classpath. You can also use a
   repository structure on the client side, but the classpath approach
is
   easier.

   Cheers,

    - Dennis

   --    Dennis M. Sosnoski
   SOA and Web Services in Java
   Axis2 Training and Consulting
   http://www.sosnoski.com - http://www.sosnoski.co.nz
   Seattle, WA +1-425-939-0576 - Wellington, NZ +64-4-298-6117



   Joe Smithian wrote:

       Hi Asen,

       Thanks for your suggestions. My client is based on wsdl2java
       stub, I tried
       stub._getServiceClient().engageModule("logging"); as you
       suggested and I got this error:  Unable to engage module :
logging
       What else I should do to engage logging module? should I
       download and install logging module?
       How can I use the logging module to monitor soap messages once
       it is engaged? Does it log to a file?

       I'd appreciate it if you can answer my question or refer me to
       online documents/examples.

       Thanks

       Joe



       On Fri, Apr 17, 2009 at 9:02 AM, Asen <asen.m.asenov@gmail.com
       <ma...@gmail.com>
       <mailto:asen.m.asenov@gmail.com
       <ma...@gmail.com>>> wrote:

          I agree.
          If you use Axis2 client, first build your logging.mar.
          If you are using your wsdl2java stubs you can do
          stub._getServiceClient().engageModule("logging");


          On Thu, Apr 16, 2009 at 11:33 PM, Sukma Agung Verdianto
          <save.nx@gmail.com <ma...@gmail.com>

       <mailto:save.nx@gmail.com <ma...@gmail.com>>> wrote:

              I think you can engage logging module from your client if
              you're using axis as the client.


              On Fri, Apr 17, 2009 at 7:59 AM, Joe Smithian
              <joe.smithian@gmail.com <ma...@gmail.com>
       <mailto:joe.smithian@gmail.com
       <ma...@gmail.com>>> wrote:

                  Hi Robert,

                  Logging Module is also a server side solution; I need
a
                  solution in the client without any change or
installing
                  anything in the server.

                  Thanks.

                  Joe.




                  On Wed, Apr 15, 2009 at 8:47 AM, robert lazarski
                  <robertlazarski@gmail.com
       <ma...@gmail.com>

                  <mailto:robertlazarski@gmail.com


       <ma...@gmail.com>>> wrote:

                      On Wed, Apr 15, 2009 at 9:44 AM, robert lazarski
                      <robertlazarski@gmail.com
       <ma...@gmail.com>

                      <mailto:robertlazarski@gmail.com


       <ma...@gmail.com>>> wrote:
                      > On Tue, Apr 14, 2009 at 11:25 PM, Joe Smithian
                      <joe.smithian@gmail.com
       <ma...@gmail.com>

                      <mailto:joe.smithian@gmail.com

       <ma...@gmail.com>>> wrote:
                      >> Hi all,
                      >>
                      >> Can any one please let me know how can I
display
                      SOAP request and response
                      >> messages in a SOAP AXIS2 Client GUI
application?
                      >
                      > Umm, the soap monitor perhaps?
                      >
                      >
       http://ws.apache.org/axis2/1_4_1/soapmonitor-module.html
                      >
                      > There's also tcpmon:
                      >
                      > https://tcpmon.dev.java.net/
                      >
                      > - R
                      >

                      Oops, I'm just waking up and I just noticed you
       can't
                      use either of
                      those. Maybe try the Logging Module and get the
       info
                      you need from
                      there.

                      http://ws.apache.org/axis2/1_4/modules.html

                      - R