axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ias" <iasan...@tmax.co.kr>
Subject RE: [PROPOSAL] Add invoke(Message) to Call and let SOAPConnectionImpl to use it
Date Thu, 11 Mar 2004 12:29:00 GMT
Finished. Thanks for all your +1.

=========================================================
Lee, Changshin (Korean name)
Ias (International name)
               Company Web Site: http://www.tmax.co.kr
               Personal Web Site: http://www.iasandcb.pe.kr
---------------------------------------------------------
JSR 201, 204, 222 and 224 Expert Group Member
Apache Web Services Project Member
R&D Center
Tmax Soft, Inc.
========================================================= 

> -----Original Message-----
> From: Ias [mailto:iasandcb@tmax.co.kr] 
> Sent: Tuesday, March 09, 2004 4:45 PM
> To: axis-dev@ws.apache.org
> Subject: [PROPOSAL] Add invoke(Message) to Call and let 
> SOAPConnectionImpl to use it
> 
> This proposal has three items:
> 
> #1. Adding invoke(Message) to Call
> 
> Here's the complete codes of the new method.
> 
>     public SOAPEnvelope invoke(Message msg) throws AxisFault {
>         try {
>             setRequestMessage( msg );
>             invoke();
>             msg = msgContext.getResponseMessage();
>             if (msg == null) {
>                 if 
> (msgContext.isPropertyTrue(FAULT_ON_NO_RESPONSE, false)) {
>                     throw new
> AxisFault(Messages.getMessage("nullResponse00"));
>                 } else {
>                     return null;
>                 }
>             }
>             SOAPEnvelope res = null;
>             res = msg.getSOAPEnvelope();
>             return res;
>         }
>         catch (Exception exp) {
>             if (exp instanceof AxisFault) {
>                 throw (AxisFault) exp ;
>             }
>             entLog.debug(Messages.getMessage("toAxisFault00"), exp);
>             throw new AxisFault(
>                     Messages.getMessage("errorInvoking00", 
> "\n" + exp));
>         }
>     }
> 
> (Thanks to Dr. Ahn for his early idea and prototype on this.)
> 
> #2. Changing SOAPConnectionImpl to use invoke(Message)
> 
> Here's the modified call method.
> 
>     public SOAPMessage call(SOAPMessage request, Object endpoint)
>         throws SOAPException {
>         if(closed){
>             throw new
> SOAPException(Messages.getMessage("connectionClosed00"));
>         }
>         try {
>             Call call = new Call(endpoint.toString());
>  
> ((org.apache.axis.Message)request).setMessageContext(call.getM
> essageContext(
> ));
>             Attachments attachments = ((org.apache.axis.Message)
>                     request).getAttachmentsImpl();
>             if (attachments != null) {
>                 Iterator iterator = 
> attachments.getAttachments().iterator();
>                 while (iterator.hasNext()) {
>                     Object attachment = iterator.next();
>                     call.addAttachmentPart(attachment);
>                 }
>             }
>             
>             String soapActionURI = checkForSOAPActionHeader(request);
>             if (soapActionURI != null)
>                 call.setSOAPActionURI(soapActionURI);
>             
>             call.setTimeout(timeout);
>             call.setReturnClass(SOAPMessage.class);
>           call.invoke((Message) request);
>             return call.getResponseMessage();
>         } catch (java.net.MalformedURLException mue){
>             throw new SOAPException(mue);
>         } catch (org.apache.axis.AxisFault af){
>             throw new SOAPException(af);
>         } catch (java.rmi.RemoteException re){
>             throw new SOAPException(re);
>         }
>     }
> 
> As you might recognize, there' no SOAPEnvelope's involvement 
> in this job.
> In addition, we don't need MessageContext to relay character 
> encoding stuffs and Call to make a Message from an Envelope 
> like invoke(SOAPEnvelope). In other words, it's simplification.
> 
> #3. Supporting passing MimeHeaders to HTTP headers
> 
> Adding the following codes to writeToSocket method of 
> HTTPSender. (Perhaps between if (posting) { } and if (null != 
> httpConnection) { )
> 
>         MimeHeaders mimeHeaders = reqMessage.getMimeHeaders();
>         if (mimeHeaders != null) {
>             for (Iterator i = mimeHeaders.getAllHeaders(); 
> i.hasNext(); ) {
>                 MimeHeader mimeHeader = (MimeHeader) i.next();
>                 header.append(mimeHeader.getName())
>                 .append(": ")
>                 .append(mimeHeader.getValue())
>                 .append("\r\n");
>             }
>         }
> 
> This implementation is inspired by 
> http://marc.theaimsgroup.com/?l=axis-
> user&m=107859760408710&w=2 . (And Sun's SAAJ 1.2 in JWSDP 1.3 supports
> that.)
> 
> Looking forward to your response,
> 
> Ias
> 
> =========================================================
> Lee, Changshin (Korean name)
> Ias (International name)
>                Company Web Site: http://www.tmax.co.kr
>                Personal Web Site: http://www.iasandcb.pe.kr
> ---------------------------------------------------------
> JSR 201, 204, 222 and 224 Expert Group Member Apache Web 
> Services Project Member R&D Center Tmax Soft, Inc.
> =========================================================
> 


Mime
View raw message