EJB3(4)

同一个会话bean也可以实现多个远程接口,不过代码上有些地方要注意,首先写第一个接口:

@Remote
public   interface  HelloRemote  {

    String sayHi(String name);
}

第二个接口:
@Remote
public   interface  HelloRemote1  {
    
    String sayBye(String name);
}

接下来写会话bean,同时实现以上两个接口:
@Stateless(mappedName = " hello " )
public   class  HelloBean  implements  HelloRemote, HelloRemote1  {

    
public String sayHi(String name) {
        
return "Hi " + name; 
    }


    
public String sayBye(String name) {
        
return "Bye " + name;
    }
    
}

注意这里用到了mappedName元素,这个很关键。把EJB模块打包部署,接下来在远程客户端测试,先写Servlet:
    @EJB(mappedName = " hello#ejb.HelloRemote1 " )
    
private  HelloRemote1 helloBean1;
    @EJB(mappedName
= " hello#ejb.HelloRemote " )
    
private  HelloRemote helloBean;

注意@EJB标注里也使用了mappedName元素,值的样式是:JNDI名#包名.接口名。再看Jsp:
<%
            InitialContext ctx 
=   new  InitialContext();
            HelloRemote helloBean 
=  (HelloRemote)ctx.lookup( " hello#ejb.HelloRemote " );
            out.println(helloBean.sayHi(
" Tom " ));
            HelloRemote1 helloBean1 
=  (HelloRemote1)ctx.lookup( " hello#ejb.HelloRemote1 " );
            out.println(
" <br> "   +  helloBean1.sayBye( " Tom " ));
%>

和Servlet中的一样

你可能感兴趣的:(jsp,bean,servlet,ejb)