}
} else {
logger.fine("Missing internal monitoring info to trace " + req.getRequestURI());
}
Handler implementor = null;
try {
Ejb2RuntimeEndpointInfo endpointInfo2 = (Ejb2RuntimeEndpointInfo)endpointInfo;
// Do ejb container pre-invocation and pre-handler
// logic
implementor = endpointInfo2.getHandlerImplementor(msgContext);
// Set http request object
msgContext.setProperty(HTTP_SERVLET_REQUEST, req);
// Set http response object so one-way operations will
// response before actual business method invocation.
msgContext.setProperty(HTTP_SERVLET_RESPONSE, resp);
ServerAuthConfig authConfig = endpointInfo2.getServerAuthConfig();
if (authConfig != null) {
sAC = authConfig.getAuthContext
((StreamingHandler)implementor,message);
if (sAC != null) {
wssSucceded =
WebServiceSecurity.validateRequest(msgContext,sAC);
}
}
// Trace if necessary
if (messageID!=null || (endpoint!=null && endpoint.hasListeners())) {
// create the thread local
ThreadLocalInfo threadLocalInfo =
new ThreadLocalInfo(messageID, req);
wsEngine.getThreadLocal().set(threadLocalInfo);
endpoint.processRequest(msgContext);
}
// Pass control back to jaxrpc runtime to invoke
// any handlers and call the webservice method itself,
// which will be flow back into the ejb container.
if (wssSucceded) {
implementor.handle(msgContext);
}
} finally {
// Always call release, even if an error happened