BusinessInterfaceExceptionpublic class BusinessInterfaceException extends com.sun.enterprise.tools.verifier.tests.ejb.EjbTest The methods of the business interface may declare arbitrary application
exceptions. However, the methods of the business interface should not throw
the java.rmi.RemoteException, even if the interface is a remote business
interface or the bean class is annotated WebService or the method as
WebMethod.
The methods of the business interface may only throw the
java.rmi.RemoteException if the interface extends java.rmi.Remote. |
Methods Summary |
---|
public com.sun.enterprise.tools.verifier.Result | check(com.sun.enterprise.deployment.EjbDescriptor descriptor)
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
Set<String> localAndRemoteClassNames = descriptor.getLocalBusinessClassNames();
localAndRemoteClassNames.addAll(descriptor.getRemoteBusinessClassNames());
for (String localOrRemoteClass : localAndRemoteClassNames)
checkForRemoteException(localOrRemoteClass,result,compName);
if(result.getStatus() != Result.WARNING) {
addGoodDetails(result, compName);
result.passed(smh.getLocalString
(getClass().getName() + ".passed",
"Business interface(s) if any are valid."));
}
return result;
| private void | checkForRemoteException(java.lang.String className, com.sun.enterprise.tools.verifier.Result result, com.sun.enterprise.tools.verifier.tests.ComponentNameConstructor compName)
try {
Class c = Class.forName(className,
false,
getVerifierContext().getClassLoader());
// do not check further if the business interface extends java.rmi.Remote
if(java.rmi.Remote.class.isAssignableFrom(c))
return;
Method[] methods = c.getMethods();
for (Method method : methods) {
Class[] exceptions = method.getExceptionTypes();
for (Class exception : exceptions) {
if(java.rmi.RemoteException.class.isAssignableFrom(exception)) {
result.getFaultLocation().setFaultyClassAndMethod(method);
addWarningDetails(result, compName);
result.warning(smh.getLocalString
(getClass().getName() + ".warning",
"java.rmi.RemoteException is thrown " +
"in method [ {0} ] of business interface [ {1} ]",
new Object[] {method.getName(), className}));
}
}
}
} catch (ClassNotFoundException e) {
Verifier.debug(e);
addErrorDetails(result, compName);
result.failed(smh.getLocalString
(getClass().getName() + ".failed1",
"[ {0} ] not found.",
new Object[] {className}));
}
|
|