如何實現EJB的抽象、繼承(有專案經驗者請進)

sunsong發表於2004-08-01
小弟正在做一個J2EE專案,遇到這樣的問題:
有幾個表,結構差不多,操作也差不多,如果是不用EJB,直接就可以抽象出一個父類,然後其他類繼承就可以了。
在EJB 模組中,我採用SessionBean facade模式,我做了兩個抽象類:
一個是EB的抽象類,一個是SB的抽象類。釋出成功。
程式碼示例:
User為實體bean Student 和 Teacher的抽象類,是一個簡單的類,包括了一些get,set的定義,Student和Teacher的Local介面中相應進行修改:
public interface Student extends EJBLocalObject,User
public interface Teacher extends EJBLocalObject,User

同時,我修改Student和Teacher bean Home介面中的各方法的返回值型別,統一為User
public User create(String sysid) throws CreateException;
public User findByPrimary(String id);
==========================
session bean :StudentController中的方法:
==========================
public User getUserById(String _sId) throws
FinderException {
Context cxt = new InitialContext("Student");
Object o = cxt.lookup("Student");
StudentHome stuHome = (StudentHome) o ;
return stuHome.findByPrimary(_sId);
}
=====================


但是事情沒有我想的那麼簡單,在jsp中呼叫session bean的時候,出現了
java.rmi.ServerException: RuntimeException; nested exception is:
java.lang.ClassCastException
的錯誤。

==========================
由於第一次做這樣的專案,而且在別的地方沒有看到過這樣的用法,我不知我的想法是否可行。如果可行,是什麼地方出了問題。還請大家指點

相關文章