File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Mock question about business interfaces

 
Benoît de Chateauvieux
Ranch Hand
Posts: 183
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi all,

Which are valid declarations for a Local business interface?
public interface Foo1 {
public void foo();
}

import javax.ejb.Local;
@Local
public interface Foo2 {
public void foo();
}

import javax.ejb.*;
@Local
public interface Foo3 extends EJBLocalObject {
public void foo();
}

import javax.ejb.*;
@Local
@Remote
public interface Foo4 {
public void foo();
}

A. Foo1, Foo2, Foo3
B. All of the above
C. Foo2
D. Foo1, Foo2

---------
ANSWER:

Foo1 is valid. There is no requirement that the interface be annotated with @Local.

Foo2 is valid. The @Local annotation may be used to directly annotate the interface.

Foo3 is invalid because a Local business interface must not extend javax.ejb.EJBLocalObject. EJBLocalObject is only used for EJB 2.x style Local interfaces.

Foo4 is invalid because a single business interface can not be both a Remote business interface and a Local business interface. This would be very dangerous since the interface would appear to be the same but would have different calling semantics(pass-by-value vs. pass-by-reference) depending on how it was used.


I have a doubt with Foo3.
The spec 4.6.6 says:
The interface must not extend the javax.ejb.EJBObject or javax.ejb.EJBLocalObject interface.


But my OC4J run without error.

What the expected result of defining a local business interface that extends javax.ejb.EJBLocalObject ?

Thanks,

Beno�t
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic