如何实现EJB的抽象、继承(有项目经验者请进)
小弟正在做一个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
的错误。
==========================
由于第一次做这样的项目,而且在别的地方没有看到过这样的用法,我不知我的想法是否可行。如果可行,是什么地方出了问题。还请大家指点
!