(The following exam question appears from EJBCertificate.com and is not taken from the real SCBCD exam set.)
What I need is an expert opinion on the why option number 5 is correct. Why can't an EJB class have a package structure? Head First EJB even suggests a package structure is possible given the contents of an ejb jar are the META-INF directory AND the PACKAGE DIRECTORIES. Is this question wrong?? What's all this talk of a security hole? That certainly didn't get mentioned in HFEJB!
Identify correct programming restrictions that a Bean provider must follow to ensure that the enterprise bean is portable and can be deployed in any compliant EJB 2.0 Container. [Select all correct answers]
1 The enterprise bean cannot define read and write to static fields. 2 The enterprise bean cannot make use of the Java Swing API. 3 The enterprise bean cannot make use of interfaces to define business methods. 4 The enterprise bean cannot make use of the Sun JavaMail API. 5 The enterprise bean must not attempt to define a class in a package.
Explanation Answers 1, 2 and 5 are correct.
Answer 1 is correct. This rule is required to ensure consistent runtime semantics because while some EJB Containers may use a single JVM to execute all enterprise bean's instances, others may distribute the instances across multiple JVMs.
Answer 2 is correct. Most servers do not allow direct interaction between an application program and a keyboard/display attached to the server system.
Answer 5 is correct. This function is reserved for the EJB Container. Allowing the enterprise bean to perform this function would create a security hole.
Answer 3 is incorrect. It is possible to create an interface and implement the interface to make available in the enterprise bean business method.
Answer 4 is incorrect. The enterprise bean can make use of the JavaMail API.
Refer to page 496 of the spec. The terminology you found is taken directly from the spec. I think this does not refer to the package structure of the bean class or interfaces. We know that they can be in a package. I think this means "the bean class cannot define an inner class in a package". Even I am not very clear about this. Would be glad if Peer or someone else can provide an explanation