Use Business Interfaces
Because the bean implementation class does not inherit from the bean interface, it’s a fairly common error to get a mismatch in business method signatures between the implementation and the interface. Typically, you would have to package and deploy the EJBs to see the error. Needless to say, this can be very frustrating at times, especially because most of these errors are simple typos or missed method parameters.
One common practice is to use business interfaces to enforce
compile-time checks. To do this, create a new interface that contains
only business methods of your bean, and let both the remote/local
bean interface and the implementation class inherit from it. However,
even though this method will work for all types of beans (CMP, BMP,
local, or remote), there are some inconveniences when dealing with
remote beans. Namely, because remote bean interfaces must throw
RemoteException,
you are also forced to do this in your business interface. Also, a
minor inconvenience is that all method parameters must be
Serializable
.
Example 2-2 shows the key interfaces for a remote bean.
// Business interface public interface Order { public int getQuantity( ) throws RemoteException; public void setQuantity (int quantity) throws RemoteException; public double getPricePerItem( ) throws RemoteException; public void setPricePerItem (double price) throws RemoteException; public double getTotalPrice( ) throws RemoteException; ...