EJB @Local和@Stateless在一起

Tom*_*mas 6 java java-ee ejb-3.0

由于在一个EJB上使用了@Local和@Stateless,我在uni工作时拒绝了我的工作.它是一个帮助bean来验证/修复传递的对象.我认为用本地和无国籍来诠释我的ejb是完全合法的.有人可以向我解释为什么这会成为一个问题?

Iva*_*aev 7

来自javax.ejb.Local javadoc:

在bean类上使用时,声明会话bean的本地业务接口....只有当bean类不实现除以下任何一个以外的单个接口时,才需要使用Local注释:java.io.Serializable; java.io.Externalizable中; javax.ejb中定义的任何接口.

因此,当您在bean类上使用此批注时,需要将本地接口'class as参数传递给此批注.如果您的bean公开了一个无界面视图,您应该使用@LocalBean对其进行注释.来自javax.ejb.LocalBean javadoc:

指定会话bean公开无接口视图.如果会话bean除了无接口视图或其implements子句包含任何其他客户端视图(本地,远程,无接口,2.x远程主页,2.x本地主页,Web服务)之外,还需要此注释. java.io.Serializable以外的接口; java.io.Externalizable中; 或者javax.ejb包定义的任何接口.

因此,如果您的bean没有实现任何接口,您可以使用@Stateless对其进行注释:

@Stateless
public class MyEJB {
    public void localMethod() {}
}
Run Code Online (Sandbox Code Playgroud)