如何实现EJB的抽象、继承(有项目经验者请进)

04-08-01 sunsong
小弟正在做一个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

的错误。

==========================

由于第一次做这样的项目,而且在别的地方没有看到过这样的用法,我不知我的想法是否可行。如果可行,是什么地方出了问题。还请大家指点

         

huzhigang
2004-08-01 15:06
ejb不能继承

sunsong
2004-08-01 15:25
不能继承?那你是如何解决这种问题的?重复Copy代码吗?

banq
2004-08-02 09:06
你做的是实体Bean,实体Bean其实用不着继承,你可以将你的继承关系反映在Model上。

sunsong
2004-08-02 13:17
楼上这位,能解释一下吗,如何把继承关系反映到Moudle上?

猜你喜欢
4Go 1 2 3 4 下一页