当前位置: 技术问答>java相关
为什么 ejb 不直接 implements bean 的 interface
来源: 互联网 发布时间:2015-08-04
本文导语: 只实现 interface 里面的方法,为什么不直接 implements 接口? 真让人费解,如果我 implement 会怎样? | 实际上, 你的远程接口是javax.ejb.EJBObject 接口的一种扩展, 这理面定义了一些EJB容器在...
只实现 interface 里面的方法,为什么不直接 implements 接口?
真让人费解,如果我 implement 会怎样?
真让人费解,如果我 implement 会怎样?
|
实际上, 你的远程接口是javax.ejb.EJBObject 接口的一种扩展, 这理面定义了一些EJB容器在进行Bean配置时使用的方法(你可以看一下ejb.的API就知道), 是不可能在你的Bean 程序中实现的. 如果你的Bean 程序实现了你的远程接口,请问你如何实现这些方法?
其实只要你研究一下你的EJB服务器为你的EJB程序E编译后的Jar文件,就知道JB服务器在编译运行你的EJB程序的时侯, 会分别为你的home 接口, remote 接口,和你的abstract class 生成不同的实现类, 在不同的实现类中实现了不同的EJB的API, 如果你随意继承就会错误!
其实只要你研究一下你的EJB服务器为你的EJB程序E编译后的Jar文件,就知道JB服务器在编译运行你的EJB程序的时侯, 会分别为你的home 接口, remote 接口,和你的abstract class 生成不同的实现类, 在不同的实现类中实现了不同的EJB的API, 如果你随意继承就会错误!
|
其实你的TryEntityRemote接口在这里可以说没有什么意义,你的接口提供了一个
方法集合模板,无非是在做一些设置和获取字段的工作。而这些方法是被CMP严格规定的!并且只能是Abstract,你在这里只是做的一些重复性的工作。
其实写一个接口来强迫BEAN类实现这个接口里面的方法,这种做法很常见,但是一般接口里面规定的都是一些业务逻辑方法,举个例子:
你还可以在你的TryEntityRemote 接口里添加如下方法:
public abstract String getAddress_Email();
然后在BEAN里面做如下实现:
public String getAddress_Email()
{
return ""+getAddress()+getEmail();
}
因为getAddress_Email这个方法并取得数据库的一个字段,换句话说,CMP并没有对它做出什么规定,可看做一个简单的业务逻辑方法。
我不知道我说清楚没有
方法集合模板,无非是在做一些设置和获取字段的工作。而这些方法是被CMP严格规定的!并且只能是Abstract,你在这里只是做的一些重复性的工作。
其实写一个接口来强迫BEAN类实现这个接口里面的方法,这种做法很常见,但是一般接口里面规定的都是一些业务逻辑方法,举个例子:
你还可以在你的TryEntityRemote 接口里添加如下方法:
public abstract String getAddress_Email();
然后在BEAN里面做如下实现:
public String getAddress_Email()
{
return ""+getAddress()+getEmail();
}
因为getAddress_Email这个方法并取得数据库的一个字段,换句话说,CMP并没有对它做出什么规定,可看做一个简单的业务逻辑方法。
我不知道我说清楚没有