[
https://issues.apache.org/jira/browse/OPENEJB-980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659231#action_12659231
]
Jacek Laskowski commented on OPENEJB-980:
-----------------------------------------
I think Geoff has mentioned it once that to make it work @ApplicationException
should be @Inherited. It would work with a small change in ClassFinder (about
to be committed), but it's not a final solution as @ApplicationException is
*not* @Inherited and making the change would violate the spec.
It looks there's no other way as to search for classes and traverse their
inheritance tree up to Object class and see whether it's annotated with a given
annotation or not. I'm working on it.
> @ApplicationException is not being inherited
> --------------------------------------------
>
> Key: OPENEJB-980
> URL: https://issues.apache.org/jira/browse/OPENEJB-980
> Project: OpenEJB
> Issue Type: Bug
> Affects Versions: 3.1
> Reporter: Geoff Callender
>
> When @ApplicationException(rollback = true) is annotated on an exception
> thrown by a session bean then all is well - the client receives the exception.
> But if the annotation is moved up to a superclass of the exception then all
> is not well - the client receives EJBTransactionRolledbackException.
> In the app server I am porting from the following worked OK, and I believe it
> is the correct behaviour:
> public interface DogServiceRemote {
> void createDog(Dog dog) throws BusinessException;
> }
> @ApplicationException(rollback = true)
> abstract public class BusinessException extends Exception {
> ...
> }
> public class ValueRequiredException extends BusinessException {
> ...
> }
> where createDog(...) throws many different subclasses of BusinessException,
> none of which is annotated with @ApplicationException.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.