At runtime, on the client side, JAX-WS (more specifically the default PipelineAssembler
of JAX-WS client runtime) relies on this factory to create a suitable transport Pipe
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.ClientPipeAssemblerContext)
method.
They are expected to check the scheme of the endpoint address
(and possibly some other settings from bindings), and create
their transport pipe implementations accordingly.
For example,
class MyTransportPipeFactoryImpl { Pipe doCreate(...) { String scheme = address.getURI().getScheme(); if(scheme.equals("foo")) return new MyTransport(...); else return null; } }
TransportPipeFactory
look-up follows the standard service
discovery mechanism, so you need
META-INF/services/com.sun.xml.ws.api.pipe.TransportPipeFactory
.
TODO
One of the JAX-WS operation mode is supposedly where it doesn't have no WSDL whatsoever. How do we identify the endpoint in such case?
- Author:
- Kohsuke Kawaguchi
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Pipe
create
(ClassLoader classLoader, ClientPipeAssemblerContext context) Deprecated.abstract Pipe
doCreate
(ClientPipeAssemblerContext context) Creates a transportPipe
for the given port, if this factory can do so, or return null.
-
Constructor Details
-
TransportPipeFactory
public TransportPipeFactory()Default constructor.
-
-
Method Details
-
doCreate
Creates a transportPipe
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 pipeline 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
TransportPipeFactory
s that can. Or non-null. - Throws:
jakarta.xml.ws.WebServiceException
- if this factory is capable of creating a transport pipe but some fatal error prevented it from doing so. This exception will be propagated back to the user application, and no furtherTransportPipeFactory
s are consulted.
-
create
@Deprecated public static Pipe create(@Nullable ClassLoader classLoader, @NotNull ClientPipeAssemblerContext context) LocatesPipelineAssemblerFactory
s and create a suitablePipelineAssembler
.- Parameters:
classLoader
- used to locateMETA-INF/servces
files.- Returns:
- Always non-null, since we fall back to our default
PipelineAssembler
.
-
TransportTubeFactory.create(ClassLoader, ClientTubeAssemblerContext)