Tuesday, August 26, 2008

Identify the APIs that all EJB 3.0 containers must make available to developers SCDBC Objective


Identify the APIs that all EJB 3.0 containers must make available to developers.

Here's another bullet from Section One of Sun's Certified Business Component Developer certification exam.

Now, I wasn't totally sure initially what they were talking about here, although it is fairly straight forward. As anyone that is paying attention knows, JSR 220, the EJB specification, is spread out over three documents, namely:

• EJB 3.0 Simpliļ¬ed API
• EJB Core Contracts and Requirements
• Java Persistence API

So, I initially thought that this objective really just wanted to test you on whether you understood this simple fact regarding the three key JSR documents, but I think the objective goes a little bit further than that.

I actually poked around the JSR 220 EJB Specification documents, but I couldn't find any specific parts that described the various APIs upon which an EJB container was dependent. So, I figured I'd head over to jcp.org and download the Java EE, JEE5 specification. Chapter 6, on page 113 (129) has all sorts of great information on the various APIs that a JEE5 application server must implement. Now, you have to be careful, because some of the APIs are designed for the web or JCA container, but putting that aside, it's a great reference.

http://jcp.org/en/jsr/detail?id=244

Required APIs

Java EE application components execute in runtime environments provided by the
containers that are a part of the Java EE platform. The Java EE platform supports
four types of containers corresponding to Java EE application component types:
application client containers, applet containers, web containers for servlets and JSP
pages, and enterprise bean containers. -pg 113


Notice how it lists four containers. I always forget about Client and Applet containers. Do RAR files not have a dedicated container? Hmmmm...I thought they did. Guess I'm wrong!

Now, the EJB container runs on top of the J2SE, or standard Java runtime environment, so all EJB components can access standard Java libraries. I guess that even includes Swing and AWT classes too, although I'm not too sure how a server side component might effectively use them, but regardless, all of the Java Standard Edition packages are available to your EJB components, including:


• Java IDL API
• JDBC API
• RMI-IIOP API
• JNDI API
• JAXP API
• JAAS API
• JMX API

Now, those are the APIs available by default. They are not optional in a standard Java environment. However, there are APIs that are optional at the JSE level, but NOT optional at either the JEE5 or EJB 3.0 level. Here's a good sorting of those required APIs:

EJB 3.0
JMS 1.1
JTA 1.1
JavaMail 1.4
JAF 1.1
Connector 1.5
Web Services 1.2
JAX-RPC 1.1
JAX-WS 2.0
JAXB 2.0
SAAJ 1.3
JAXR 1.0
Java EE Management 1.1
Java EE Deployment 1.2c
JACC 1.1
JSP Debugging 1.0
JSTL 1.2
Web Services Metadata 2.0
JSF 1.2
Common Annotations 1.0
StAX 1.0
Java Persistence 1.0

The following APIs are required by JEE5, most of which are required by the web container, but are not required by the EJB 3.0 container:

JSF 1.2
JSP Debugging 1.0
JSTL 1.2
Java EE Deployment 1.2c
Servlet 2.5
JSP 2.1

No comments: