Chris,
 From you posting I am a bit confused. As far as I understand, after the client has 
completed the call to the web service, the MessageContext object can still be accessed 
by retrieving it from the Call object by invoking the getMessageContext() method. So, 
how can it be said that the message context has disappeared (as mentioned in your 
posting) after the call to the service has been made?

In effect, to answer Gloria's question in he original posting -
  Her question - Does MessageContext only exist with the service, but not accessible 
from a client?
  My answer would be - No, MessageContext is accessible from the client as well and 
does not exist only with the service. 
        
        Here is a snippet of code that I have and works perfectly. Especially note the 
lines where I call the service; after which, I get the message context from the "call" 
and extract the attachments.


        //will go through the TCP monitor listening on 7080
        String endPoint = "http://localhost:7080/cuis/services/Email";;
        String method = "sendMailWithAttachment";
        System.out.println("calling web service at - "+endPoint);

        try
        {
          Service  service = new Service();
          org.apache.axis.client.Call call  = (org.apache.axis.client.Call) 
service.createCall();
          call.setTargetEndpointAddress(new java.net.URL(endPoint));

          //////// ping
          System.out.println("pinging the service..with an attachement");
          call.setOperationName(new QName("Email", "ping"));
          call.addParameter( "op1", XMLType.XSD_STRING, ParameterMode.IN);
          call.setReturnType(XMLType.AXIS_VOID);
          
//call.setProperty(Call.ATTACHMENT_ENCAPSULATION_FORMAT,Call.ATTACHMENT_ENCAPSULATION_FORMAT_DIME);


          String[] array = new String[1];
          array[0] = "hello";
          //add an attachment
          call.addAttachmentPart(new AttachmentPart(dh));
          //call the service
          String returnValue = (String) call.invoke(array);

          //get the message context and extract the attachments
          org.apache.axis.MessageContext messageContext = call.getMessageContext();
          org.apache.axis.Message responseMessage =  
messageContext.getResponseMessage();
          System.out.println("Number of attachments is -> 
"+responseMessage.countAttachments());
          responseMessage.getAttachments();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }


Please feel free to correct me.

Thanks
Srinivas





-----Original Message-----
From: chris [mailto:[EMAIL PROTECTED] 
Sent: Thursday, November 13, 2003 7:25 PM
To: [EMAIL PROTECTED]
Subject: RE: MessageContext doesn't work at client side?


Gloria - At what step are you attempting to capture the message context?

MessageContext is *only* present and valid while the client is processing the SOAP 
method call.  Until the call method is triggered by ClientMain, a message context 
doesn't exist.  By the time control is returned to ClientMain after calling a stub 
method, the message context has disappeared.  After the SOAP response is processed, 
all relevant context information is held in the Stub, Call, or Service object.

/Chris
http://cvs.apache.org/~haddadc



-----Original Message-----
From: Yan Lin [mailto:[EMAIL PROTECTED] 
Sent: Thursday, November 13, 2003 5:09 PM
To: [EMAIL PROTECTED]
Subject: MessageContext doesn't work at client side?

Hi,

I have created a service and successfully deployed.  At client side, I created a 
ClientMain.java which only contains a "main" method for the purpose of testing.  I 
tried to use "MessageContext.getCurrentContext()", but I always get 
NullPointerException.  

Does MessageContext only exist with the service, but not accessible from a client?

Thanks!

Gloria

__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard 
http://antispam.yahoo.com/whatsnewfree

Reply via email to