Class TransportTubeFactory

java.lang.Object
com.sun.xml.ws.api.pipe.TransportTubeFactory
Direct Known Subclasses:
TCPTransportPipeFactory

public abstract class TransportTubeFactory extends Object
Factory for transport tubes that enables transport pluggability.

At runtime, on the client side, JAX-WS (more specifically the default TubelineAssembler of JAX-WS client runtime) relies on this factory to create a suitable transport Tube that can handle the given endpoint address.

JAX-WS extensions that provide additional transport support can extend this class and implement the doCreate(com.sun.xml.ws.api.pipe.ClientTubeAssemblerContext) method. They are expected to check the scheme of the endpoint address (and possibly some other settings from bindings), and create their transport tube implementations accordingly. For example,

 class MyTransportTubeFactoryImpl {
   Tube doCreate(...) {
     String scheme = address.getURI().getScheme();
     if(scheme.equals("foo"))
       return new MyTransport(...);
     else
       return null;
   }
 }
 

TransportTubeFactory look-up follows the standard service discovery mechanism, so you need META-INF/services/com.sun.xml.ws.api.pipe.BasicTransportTubeFactory.

Author:
Jitendra Kotamraju
See Also:
  • Constructor Details

    • TransportTubeFactory

      public TransportTubeFactory()
  • Method Details

    • doCreate

      public abstract Tube doCreate(@NotNull ClientTubeAssemblerContext context)
      Creates a transport Tube for the given port, if this factory can do so, or return null.
      Parameters:
      context - Object that captures various contextual information that can be used to determine the tubeline to be assembled.
      Returns:
      null to indicate that this factory isn't capable of creating a transport for this port (which causes the caller to search for other TransportTubeFactorys that can. Or non-null.
      Throws:
      jakarta.xml.ws.WebServiceException - if this factory is capable of creating a transport tube but some fatal error prevented it from doing so. This exception will be propagated back to the user application, and no further TransportTubeFactorys are consulted.
    • create

      public static Tube create(@Nullable ClassLoader classLoader, @NotNull ClientTubeAssemblerContext context)
      Locates TransportTubeFactorys and create a suitable transport Tube.
      Parameters:
      classLoader - used to locate META-INF/servces files.
      Returns:
      Always non-null, since we fall back to our default Tube.
    • createDefault

      protected Tube createDefault(ClientTubeAssemblerContext context)
    • createHttpTransport

      protected Tube createHttpTransport(ClientTubeAssemblerContext context)