distinctName = (String) unmarshaller.readObject();
beanName = (String) unmarshaller.readObject();
} catch (Throwable e) {
throw EjbMessages.MESSAGES.failedToReadEjbInfo(e);
}
final EjbDeploymentInformation ejbDeploymentInformation = this.findEJB(appName, moduleName, distinctName, beanName);
if (ejbDeploymentInformation == null) {
this.writeNoSuchEJBFailureMessage(channelAssociation, invocationId, appName, moduleName, distinctName, beanName, null);
return;
}
final ClassLoader tccl = SecurityActions.getContextClassLoader();
Runnable runnable = null;
try {
//set the correct TCCL for unmarshalling
SecurityActions.setContextClassLoader(ejbDeploymentInformation.getDeploymentClassLoader());
// now switch the CL to the EJB deployment's CL so that the unmarshaller can use the
// correct CL for the rest of the unmarshalling of the stream
classResolver.switchClassLoader(ejbDeploymentInformation.getDeploymentClassLoader());
// read the Locator
final EJBLocator<?> locator;
try {
locator = (EJBLocator<?>) unmarshaller.readObject();
} catch (Throwable e) {
throw EjbMessages.MESSAGES.failedToReadEJBLocator(e);
}
final String viewClassName = locator.getViewType().getName();
// Make sure it's a remote view
if (!ejbDeploymentInformation.isRemoteView(viewClassName)) {
this.writeNoSuchEJBFailureMessage(channelAssociation, invocationId, appName, moduleName, distinctName, beanName, viewClassName);
return;
}
final ComponentView componentView = ejbDeploymentInformation.getView(viewClassName);
final Method invokedMethod = this.findMethod(componentView, methodName, methodParamTypes);
if (invokedMethod == null) {
this.writeNoSuchEJBMethodFailureMessage(channelAssociation, invocationId, appName, moduleName, distinctName, beanName, viewClassName, methodName, methodParamTypes);
return;
}