You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Vamsavardhana Reddy <c1...@gmail.com> on 2008/08/07 17:00:17 UTC
EJB reference computed as Remote reference even though the business interface has no @Remote annotation
I am using DeploymentLoader to process an EJB3 annotated ejb jar and obtain
meta-data complete descriptors. I am using @EJB annotation to inject a
session bean. I am noticing that even though the business interface has no
@Remote annotation on it is resulting in an EjbRef rather than EjbLocalRef.
(I am examining the org.apache.openejb.jee.SessionBean object created).
Isn't EjbRef used for remote references? If I specify @Local on the
business interface explicitly then it is resulting in EjbLocalRef. Doesn't
absence of @Remote on the interface mean the interface is local? Is this a
problem? If not, what is the idea behind the way it is working now?
++Vamsi
Re: EJB reference computed as Remote reference even though the business interface has no @Remote annotation
Posted by David Blevins <da...@visi.com>.
]On Aug 7, 2008, at 8:00 AM, Vamsavardhana Reddy wrote:
> I am using DeploymentLoader to process an EJB3 annotated ejb jar and
> obtain
> meta-data complete descriptors. I am using @EJB annotation to
> inject a
> session bean. I am noticing that even though the business interface
> has no
> @Remote annotation on it is resulting in an EjbRef rather than
> EjbLocalRef.
> (I am examining the org.apache.openejb.jee.SessionBean object
> created).
> Isn't EjbRef used for remote references? If I specify @Local on the
> business interface explicitly then it is resulting in EjbLocalRef.
> Doesn't
> absence of @Remote on the interface mean the interface is local?
The deployment descriptor is the ultimate authority so truthfully
we're not exactly safe assuming that we should use EjbLocalRef when
the interface is annotated with @Local. For all intense purposes we
don't know what kind of ref an @EJB to a 3.0 business interface will
end up being until we resolve it and see how the referee classified
that business interfaces.
> If not, what is the idea behind the way it is working now?
Right, so the way we have it now is that when in doubt we use the
EjbRef. We added a little non-xml field that allows us to flag it as
ambiguous:
@XmlTransient
protected Type refType = Type.REMOTE;
public Type getRefType() {
return refType;
}
So leaving the AnnotationDeployer, that method will return Type.REMOTE
or Type.UNKNOWN. Later on in the deployment chain when we resolve the
reference to the target bean we potentially update that yet again to
be Type.LOCAL.
-David