首先,要定义一个本地接口:
package huizhi.HelloEJBLocal;
import javax.ejb.Local;
@Local
public interface HelloEJBLocal {
public String hello(String name);
}
然后定义这个接口的实现类:
package huizhi.HelloEJBLocal;
import javax.ejb.Local;
import javax.ejb.Stateless;
@Stateless
@Local( { HelloEJBLocal.class })
public class HelloEJBLocalbean implements HelloEJBLocal {
public HelloEJBLocalbean() {
}
public String hello(String name) {
return ("你好," + name);
}
}
@Local 注释用来指定bean实现类的本地接口。bean实现类可以继承多个本地接口,每个接口之间用都好分开,如果只有一个本地接口可以省去大括号。
测试的JSP如下:
<%@ page language="java" import="javax.naming.*, huizhi.HelloEJBLocal.*" pageEncoding="gb2312"%>
<!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=gb2312">
<title>无状态会话Bean本地接口</title>
</head>
<body>
<!-- 通过接口调用类 -->
<%
try{
InitialContext ctx = new InitialContext();
HelloEJBLocal hr = (HelloEJBLocal)ctx.lookup("HelloEJBLocalbean/local");
out.print("<br>通过本地接口调用EJB<br>" + hr.hello("李小婉"));
}catch(Exception e){
out.println(e.getMessage());
out.print("<br>本地接口调用失败!");
}
%>
</body>
</html>
打包,发布和有状态会话bean远程接口一样,这里不在赘述。