概述
在一个真实的项目中,ejb的数量很多,ejb之间会互相的调用,在一个ejb中可以通过依赖注入的方式调用另一个ejb。
实现
编写第一个ejb
ejb接口类
package wang.ejb3; public interface Other { public String sayMe(); } ejb实现类
package wang.ejb3.impl; import javax.ejb.Stateless; import wang.ejb3.Other; @Stateless public class OtherBean implements Other { public String sayMe() { return "other"; } }
编写第二个ejb
ejb远程接口类
package wang.ejb3; public interface HelloWorld { public String sayHello(String name); } ejb本地接口类
package wang.ejb3; public interface HelloWorldLocal extends HelloWorld{ } ejb实现本地接口及远程接口类,在该类中注入第一个ejb类
package wang.ejb3.impl; import javax.ejb.EJB; import javax.ejb.Remote; import javax.ejb.Local; import javax.ejb.Stateless; import wang.ejb3.HelloWorld; import wang.ejb3.HelloWorldLocal; import wang.ejb3.Other; @Stateless @Remote(HelloWorld.class) @Local(HelloWorldLocal.class) public class HelloWorldBean implements HelloWorld,HelloWorldLocal { @EJB Other other; public String sayHello(String name) { return name + "说:你好," + other.sayMe(); } } 编写客户端
package wang.ejb3.client; import javax.naming.InitialContext; import javax.naming.NamingException; import wang.ejb3.HelloWorld; public class EJBClient { /** * @param args */ public static void main(String[] args) { try { InitialContext ctx = new InitialContext(); HelloWorld helloworld = (HelloWorld)ctx.lookup("HelloWorldBean/remote"); System.out.println(helloworld.sayHello("李四")); } catch (NamingException e) { e.printStackTrace(); } } } 运行jboss服务器,运行第二个ejb,得到结果
李四说:你好,other
说明在第二个ejb中注入第一个ejb成功。