Hello,

I just downloaded SOAP 2.2 and wanted to make an integration onto JMS. So I looked into the Transport framework and build a JMS Transport provider.
Hovewer, the current transport framework has a design drawback: the client must be aware of the transport used and must chose the right transport object. That prevent SOAP client to use a simple configuration file.
So I design a generic and client independant Transport framework that is close to the current one.

The current design is inspired from the URL one.
We could have a generic SOAPTransportURL class (like URL) that have a single constructor with a single String argument that is the server URL (like http://myserver/soap/rcprouter). Also the SOAPTransportURL class has another method class getSOAPTransport that return an instance of a class that implements the SOAPTransport interface.
The getSOAPTransport method use the following algorithm the get the correct transport implementation:
If a SOAPTransportFactory has been set in the virtual machine, then the method getSOAPTransport is called on this transport factory with a single argument that is the protocol scheme (http, jms, ...).
If no transport have been found, the method use a Java property (like org.apache.soap.transport.pkgs) that lists the Java packages for SOAP transport. Then the protocol is added and SOAPTransport also and the class is instanciated.
Last, but not least, the package name org.apache.org.transport is used to locate any standard tranport provided by the SOAP Apache.

So, with this design, the only information the client has to provide is a String URL. This will force us to specify some URL forms not yet standardized.
Here is my proposition:
JMS: jms://queueconnectionfactory/queuefactory
POP3: pop3://user:password@server:port/emailaddress (assumes the same SMTP and POP3 server is used)
IMAP: imap4://user:password@server:port/emailaddress

Please note that this specification prevents us to develop standard Java URLConnection objects. I didn't choose this option because the paradigm is quite different: we want to identify access point through the URL string where Java URL objects address ressources. For example, a JMS URL identify a message in a queue where we want to address a specific queue.

Please find a summary of all classes and interfaces for this design:

public class SOAP TransportURL {
  public SOAPTransportURL(String url);
  public SOAPTransport getSOAPTransport();
  public static void setSOAPTransportFactory(SOAPTransportFactory stf);
}

public interface SOAPTransportFactory {
  public SOAPTransport getSOAPTransport(String scheme);
}

Regarding AXIS, I just gave a quick look at the source code and it seems the Transport framework has been removed. Can you confirm that ? Is there any plan about this feature ?

If the list aggrees with this design, then I will start the developement this week and could post the result by the beginning of next week.
Any comments ?
Thanks
Jeff
 

--
Jeff MAURY
SCORT CTO

 #####   #####  ####### ######  #######
#     # #     # #     # #     #    #
#       #       #     # #     #    #
 #####  #       #     # ######     #
      # #       #     # #   #      #
#     # #     # #     # #    #     #
 #####   #####  ####### #     #    #

  Extending the net to the mainframe
  ==================================
 

begin:vcard 
n:MAURY;Jeff
tel;cell:33613402619
tel;work:33141383500
x-mozilla-html:FALSE
url:http://www.scort.com
org:<A HREF=http://www.scort.com><img alt="Jump to the SCORT Web site" align=center border=no src=http://www.scort.com/images_index/logo_scort_hom.GIF></A>;R&D
adr:;;1 place du Moutier;SURESNES;;92150;FRANCE
version:2.1
email;internet:[EMAIL PROTECTED]
title:CTO
fn:Jeff MAURY
end:vcard

Reply via email to