EJB3 (3)

EJB3 (3)

我想在远程对象中调用本地对象,我尝试这样编写代码,首先创建一个本地接口:
@Local
public   interface  MessageLocal  {

    String getMessage();
    
}

接着编写一个会话bean实现该接口:
@Stateless
public   class  MessageBean  implements  MessageLocal  {

    
public String getMessage() {
        
return "Hello world";
    }

    
}

然后创建一个远程接口:

@Remote
public   interface  HelloRemote  {

    String welcome();
    
}

编写一个会话bean实现该接口:
@Stateless
public   class  HelloBean  implements  HelloRemote  {
    @EJB
    
private MessageLocal messageBean;

    
public String welcome() {
        
return messageBean.getMessage();
    }

    
}

在远程对象里声明了一个本地接口的引用,并尝试在远程方法当中调用本地接口的本地方法。这些都没问题,打包部署成功。
<%
            InitialContext ctx 
=   new  InitialContext();
            HelloRemote helloBean 
=  (HelloRemote)ctx.lookup(HelloRemote. class .getName());
            out.println(helloBean.welcome());
%>

在远程客户端的代码如此,看起来一切正常,不过在部署WEB模块的时候报异常:正在域中部署应用程序 失败;为模块 [EjbWebClient] 装入部署描述符时出错 -- Cannot resolve reference Unresolved Ejb-Ref ejb.HelloBean/messageBean@jndi: @[email protected]@Session@null

你可能感兴趣的:(EJB3 (3))