FooBean and BarBean are both EJB 3.0 stateless beans with container-managed transaction demarcation. All business methods in FooBean have transaction attribute REQUIRED, and all business methods in BarBean have transaction attribute REQUIRED_NEW. The business method foo in FooBean invokes the Business method bar in BarBean.
Given:
10. Public class BarBean {
11. public void bar () {
12. throw new RuntimeException (unexpected error . . . );
13. }}
Which is true about the method of invocation assuming execution reaches line 12?
A.
FooBean.foo method receives javax.ejb.EJBException.
B.
The BarBean bean instance is in ready state for the next invocation.
C.
FooBean.foo method receives javax -ejb. EJBTtansactionRolledbackException.
D.
FooBean.foo method receives the original RuntimeException thrown from BarBean.bar method.
A is correct
Correct answer is A:
The exception will be thrown within the FooBean container. A standard EJBException will be thrown. The EJBException is thrown to report that the invoked business method or callback method could not be completed because of an unexpected error (e.g. the instance failed to open a database connection).