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