EJB3.0开发本地接口的无状态会话bean

概述

 

当客户端与ejb运行在同一个jvm时,他们之间可以通过内存进行交互,没有必要进行网络通信,减少性能的开销,所以引入了本地接口,只有客户端与ejb运行在同一个jvm中(客户端与ejb发布在同一个jboss内),才能采用本地接口,否则只能采用远程接口。

实现

编写本地接口类,继承与前面编写的远程接口,以使本地接口继承远程接口的所有业务方法

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; @Stateless @Remote(HelloWorld.class) @Local(HelloWorldLocal.class) public class HelloWorldBean implements HelloWorld, HelloWorldLocal { public String sayHello(String name) { return name + "说:你好,世界"; } }  利用build.xml构建文件部署该ejbjboss服务器中。

编写本地接口客户端,建立一个web的项目,新建一个testLocal.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="javax.naming.*,wang.ejb3.HelloWorldLocal" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <% try { InitialContext ctx = new InitialContext(); HelloWorldLocal helloworld = (HelloWorldLocal)ctx.lookup("HelloWorldBean/local"); out.println(helloworld.sayHello("张三")); } catch (NamingException e) { e.printStackTrace(); } %> </body> </html>  把该web项目发布成war包,并且部署到jboss服务器中,启动jboss,在浏览器中输入http://localhost:8080/EJBClient/testLocal.jsp,得到正确的结果,表示客户端调用本地ejb成功。

 

 

 

 

 

你可能感兴趣的:(bean,jboss,String,ejb,服务器,interface)