### Eclipse Workspace Patch 1.0 #P metrotrunk Index: src/main/java/org/jboss/wsf/stack/metro/InvokerEJB3.java =================================================================== --- src/main/java/org/jboss/wsf/stack/metro/InvokerEJB3.java (revision 11086) +++ src/main/java/org/jboss/wsf/stack/metro/InvokerEJB3.java (working copy) @@ -24,6 +24,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import javax.ejb.EJBAccessException; import javax.ejb.EJBException; import javax.xml.ws.Provider; import javax.xml.ws.WebFault; @@ -109,9 +110,11 @@ return retObj; } - private void handleException(Exception ex) + protected void handleException(Exception ex) throws InvocationTargetException, IllegalAccessException { + final Exception originalException = ex; + //Unwrap EJBException if (ex instanceof EJBException) ex = ((EJBException)ex).getCausedByException(); @@ -122,6 +125,9 @@ if (ex instanceof IllegalAccessException) throw (IllegalAccessException)ex; + if (ex == null && originalException instanceof EJBAccessException) + throw new IllegalAccessException(originalException.getMessage()); + //check if this is a declared fault; Metro expects an InvocationTargetException //for declared faults also when calling an EJB3 endpoint if (ex.getClass().isAnnotationPresent(WebFault.class))