1
votes

I'm learning about Java EE (EE 6 specifically) and find the differences between EJB and EJB Lite a little confusing.

Java EE6 web profile only supports EJB Lite.

My understanding of "EJB Lite" is that it is a simpler subset of EJB (I can find those differences documented easily enough) and you package your EJB classes in a WAR.

So will I only able to access those EJB classes from the webapp contained in the same WAR (or another webapp if I put both of them in the same EAR) ?

I assume that this means that the EJB Lite classes are deployed to the web container. Does this mean that there is no EJB container in the EE6 web profile ?

(also do we need a web-profile tag?)

1

1 Answers

1
votes

Note that EJB lite is shared by both the web profile and the EJB embeddable container.

1.

So will I only able to access those EJB classes from the webapp contained in the same WAR (or another webapp if I put both of them in the same EAR) ?

Section 20.4.3 of the EJB 3.1 spec:

The local client view(including the no-interface view) of an enterprise bean component defined within a .war file is only required to be accessible to components within the same .war file. Applications needing access to the local client view of an enterprise bean from a different module in the same application should use an ejb-jar file to define the enterprise bean that exposes the local client view.

Note, the spec allows vendor extensions so that other modules can use the EJBs, but relying on that won't be portable.

2.

assume that this means that the EJB Lite classes are deployed to the web container. Does this mean that there is no EJB container in the EE6 web profile ?

This is implementation specific, but given the existence of an embeddable EJB container, I suspect most implementations will ship either the full EJB container or a subset.

3.

(also do we need a web-profile tag?)

No.