JBITransportPipeFactorypublic class JBITransportPipeFactory extends com.sun.xml.ws.api.pipe.TransportPipeFactory This Factory class is used by the JAX-WS client runtime to create TransportPipe.
This factory is configured using the standard JAR services framework. The file
"META-INF/services/com.sun.xml.ws.api.pipe.TransportPipeFactory" is used for
this purpose. It is put in appserv-rt.jar so that it is available in the
appserver classpath. |
Methods Summary |
---|
private com.sun.xml.ws.api.pipe.Pipe | createJBITransportPipe(com.sun.enterprise.webservice.ServiceEngineFacade facade, com.sun.xml.ws.api.pipe.ClientPipeAssemblerContext context)
URL wsdlURL = context.getService().getWSDLDocumentLocation();
QName service = context.getService().getServiceName();
return facade.createJBITransportPipe(context.getBinding(),
wsdlURL,
service,
context.getWsdlModel());
| public com.sun.xml.ws.api.pipe.Pipe | doCreate(com.sun.xml.ws.api.pipe.ClientPipeAssemblerContext context)If jbi-enabled property in the context is true or if a composite
application with this consumer endpoint is deployed then a
JBITransportPipe is created otherwise null is returned.
Returning null from this method allows JAX-WS to use the normal
invocation path by creating other relevant Tranport pipe.
//if service engine is not installed then return null
ServiceEngineFacade facade =
ServiceEngineRtObjectFactory.getInstance().getFacade();
if(facade == null)
return null;
InvocationManager invmgr =
Switch.getSwitch().getInvocationManager();
ComponentInvocation inv = invmgr.getCurrentInvocation();
if (inv == null || inv.getInstance() == null) {
return null;
}
// ServiceEngineUtil is used here because a package level variable of
// WSClientContainer is used to get the portInfo
//For all jsr109 invocations container will be WSClientContainer. The
//normal invocations need to check if there is a composite application.
ServiceRefPortInfo portInfo =
(context.getContainer() instanceof WSClientContainer)?
ServiceEngineUtil.getPortInfo((WSClientContainer)context.getContainer(),
context.getWsdlModel().getName()):
null;
if(portInfo == null) {
if(hasRegisteredEndpointInJBI(facade, context))
return createJBITransportPipe(facade, context);
return null;
}
NameValuePairDescriptor stubProp =
portInfo.getStubPropertyByName("jbi-enabled");
// In a composite application jbi-enabled flag can be used to override
// the client routing logic
if(stubProp == null) {
if(hasRegisteredEndpointInJBI(facade, context))
return createJBITransportPipe(facade, context);
return null;
}
String jbi_enabled = stubProp.getValue();
if(jbi_enabled.equalsIgnoreCase("true")) {
return createJBITransportPipe(facade, context);
}
return null;
| private boolean | hasRegisteredEndpointInJBI(com.sun.enterprise.webservice.ServiceEngineFacade facade, com.sun.xml.ws.api.pipe.ClientPipeAssemblerContext context)Check whether the composite application has registered an endpoint for
this client
QName serviceName = context.getService().getServiceName();
String endpointName = context.getWsdlModel().getName().getLocalPart();
return facade.hasConsumerEP(serviceName, endpointName);
|
|