Application Client中的EJB注入不起作用

时间:2013-05-16 03:41:05

标签: java java-ee ejb jndi

我尝试在我的应用程序客户端中注入无状态EJB,然后出现以下错误

  

SEVERE:准备应用程序时出现异常:无法加载EJB模块。 DeploymentContext不包含任何EJB。检查存档以确保正确打包C:\ glassfish3 \ glassfish \ domains \ domain1 \ applications \ EJB。

     

如果使用EJB组件注释来定义EJB,并且还使用了ejb或Web部署描述符,请确保部署描述符引用Java EE 5或更高版本模式,并且metadata-complete属性为未设置为true,因此可以按预期处理组件注释

我的客户是这样定义的:

@EJB
private static Sless sless;
public static void main(String[] args) {
    System.out.println("Sless says: " + sless.hello());
}

Sless是我的界面,因此定义:

@Remote
public interface Sless {
    public String hello();
}

我还有一个实现Sless

的班级
@Stateless
public class SlessBean implements Sless{
    @Override
    public String hello() {
        return "hello, world!\n";
    }    
}

任何有关问题来自哪里的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:4)

1) Standalone clientsnon-managed POJOs(不由容器维护的POJO)不支持注释注入。因此@EJB无效。

2)您必须从独立客户端执行手动 JNDI look up

您需要什么?

1) EJB 扩展Remote接口。由于Local界面未向{strong> 跨应用程序 远程 调用公开EJB

2)独立客户端中的依赖jar个文件。 即: ORB Jar

3)您需要知道服务器上的RMI/IIOP端口。

4)如果Standalone clientServer使用不同的 JDK / JRE实施,您还必须小心。 对于ex : 1使用SUN JDK,其他使用IBM JDK

按照此操作从EJB >>连接到Glassfish上的Standalone client https://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB

相关问题