Methods Summary |
---|
private com.sun.xml.rpc.spi.runtime.Implementor | createImplementor(com.sun.xml.rpc.spi.runtime.RuntimeEndpointInfo targetEndpoint)
Tie tie = (Tie) targetEndpoint.getTieClass().newInstance();
Class seiClass = targetEndpoint.getRemoteInterface();
Class implClass = targetEndpoint.getImplementationClass();
Remote servant = null;
if( seiClass.isAssignableFrom(implClass) ) {
// if servlet endpoint impl is a subtype of SEI, use an
// instance as the servant.
servant = (Remote) implClass.newInstance();
} else {
// Create a dynamic proxy that implements SEI (and optionally
// ServiceLifecycle) and delegates to an instance of the
// endpoint impl.
Object implInstance = implClass.newInstance();
InvocationHandler handler =
new ServletImplInvocationHandler(implInstance);
boolean implementsLifecycle =
ServiceLifecycle.class.isAssignableFrom(implClass);
Class[] proxyInterfaces = implementsLifecycle ?
new Class[] { seiClass, ServiceLifecycle.class } :
new Class[] { seiClass };
servant = (Remote) Proxy.newProxyInstance
(implClass.getClassLoader(), proxyInterfaces, handler);
}
tie.setTarget(servant);
Implementor implementor = rpcFactory_.createImplementor(servletContext_, tie);
implementor.init();
return implementor;
|
public void | destroy()
for (Iterator iter = implementorCache_.values().iterator();
iter.hasNext();) {
Implementor implementor = (Implementor) iter.next();
try {
implementor.destroy();
} catch(Throwable t) {
// @@@ log
}
}
implementorCache_.clear();
|
public com.sun.xml.rpc.spi.runtime.Implementor | getImplementorFor(com.sun.xml.rpc.spi.runtime.RuntimeEndpointInfo targetEndpoint)
Implementor implementor = null;
try {
synchronized(targetEndpoint) {
implementor = (Implementor)
implementorCache_.get(targetEndpoint);
if( implementor == null ) {
implementor = createImplementor(targetEndpoint);
implementorCache_.put(targetEndpoint, implementor);
}
}
InvocationManager invManager =
Switch.getSwitch().getInvocationManager();
ComponentInvocation inv = invManager.getCurrentInvocation();
inv.setWebServiceTie(implementor.getTie());
} catch(Throwable t) {
/* XXX FIXME
JAXRPCServletException jse = new JAXRPCServletException
("error.implementorFactory.newInstanceFailed",
targetEndpoint.getName());
jse.initCause(t);
throw jse;
*/
RuntimeException re = new RuntimeException();
re.initCause(t);
throw re;
}
return implementor;
|
public void | releaseImplementor(com.sun.xml.rpc.spi.runtime.RuntimeEndpointInfo targetEndpoint, com.sun.xml.rpc.spi.runtime.Implementor implementor)
// do nothing
|