[cdi-dev] Inconsistency in the spec regarding remote EJBs

Antoine Sabot-Durand antoine at sabot-durand.net
Mon Jul 20 10:24:50 EDT 2015


Le lun. 20 juil. 2015 à 15:31, Jozef Hartinger <jharting at redhat.com> a
écrit :

> As Martin explained, it is not the case that "remote EJBs are not CDI
> beans".


It's not written in black and white but in section 3.7 resources (
http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#resources) ,  remote EJB
are defined as resources and may can't be directly injected.
So if remote EJB are beans EntityManager or Web Services are as well.



> Therefore, I am wondering why this behavior is a problem? AFAIK
> all the CDI implementations pass this test and therefore there may (at
> least in theory) be applications relying on this behavior.
>

As said in my first mail, EJB spec sates (section 3.2.1)

"The arguments and results of the methods of the remote business interface
are passed by value."

I may be wrong but the observer in in the remote EJB is called with
arguments passed by reference. So we are violating EJB specification.

So IMO we should do something about this. Because the original concern of
Bill was about beans injected in remote method observer parameters and how
they were copied.

Any thought?

Antoine



>
> Jozef
>
> On 16.7.2015 15:25, Antoine Sabot-Durand wrote:
> > Hi guys,
> >
> >
> > Bill Shanon, just pointed me to this test in TCK:
> >
> >
> https://github.com/cdi-spec/cdi-tck/blob/1.2/impl/src/main/java/org/jboss/cdi/tck/tests/event/observer/resolve/enterprise/ResolveEnterpriseEventObserverTest.java
> >
> > It tests the following assertion:
> >
> > "If the bean is a session bean, the observer method must be either a
> > business method of the EJB or a static method of the bean class.”
> >
> > The EJB containing the observers for the test is:
> >
> >
> https://github.com/cdi-spec/cdi-tck/blob/1.2/impl/src/main/java/org/jboss/cdi/tck/tests/event/observer/resolve/enterprise/Spitz.java
> >
> > The EJB contains one business method coming from a local interface, one
> > from a remote and one static method. the 3 are observers methods
> >
> > The test expects that the remote business observer method should be
> called.
> >
> > Here we have an inconsistency IMO. By doing this we are violating rules
> > the CDI spec regarding the fact that remote EJBs are not CDI beans. And
> > we are calling this remote business method passing the event payload by
> > reference and not by value which violates EJB specification regarding
> > remote EJB.
> >
> > I suggest that we change the assertion to:
> >
> > If the bean is a session bean, the observer method must be either a
> > local business method of the EJB or a static method of the bean class.
> >
> > and the TCK accordingly. Any thought ?
> >
> > Antoine
> >
> >
> > _______________________________________________
> > cdi-dev mailing list
> > cdi-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/cdi-dev
> >
> > Note that for all code provided on this list, the provider licenses the
> code under the Apache License, Version 2 (
> http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas
> provided on this list, the provider waives all patent and other
> intellectual property rights inherent in such information.
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/cdi-dev/attachments/20150720/e803a453/attachment.html 


More information about the cdi-dev mailing list