这篇文章不是教别人怎样入门,而是记录了我怎样在一个星期的痛苦挣扎之后,总结出来的一个HelloWorld的ejb+jsp版本的开发方法,因为是刚刚成功,只是记录了整个过程,还没有来得及总结。
开发工具用的是netbeans6.8,首先在菜单File->New Project中选择Java EE之EJB Module,创建EJB容器EJBHello1,其实整个EJB容器开发没有什么难度,在左边Project标签下的EJBHello1工程上点右键,创建一个新的java Package名为newpackage,这时在Source Packages里就会出现newpackage项,在该项上点右键,创建Session Bean,在随后出现的对话框里勾选上Remote,选Finish就创建了NewSessionBeanRemote接口和 NewSessionBean类,然后创建SayHello方法。
下面创建一个JSP工程WebApplication1,File->New Project->Java Web->Web Application,然后要将该工程和上面的EJB容器联系起来,为此,在Project标签的WebApplication1项上点右键,出现的对话框的Catagories框里选Libraries,点右边的Add Project按钮选取刚才创建的EJBHello1工程,点Add JAR/Folder按钮选取glassfish安装文件夹下的lib文件夹里的javaee.jar appserv-rt.jar文件,确定后,在Libraries下就出现了上述三项。
修改Web Pages下的index.jsp文件,在文件开头部分加入<%@page import="newpackage.NewSessionBeanRemote,javax.naming.*,java.util.Properties"%>,在body部分用lookup方法通过JNDI名称查找EJB,这里的JNDI名称为包名.接口名。
所有程序如下:
NewSessionBeanRemote.java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package newpackage;
import javax.ejb.Remote;
/**
*
* @author zy
*/
@Remote
public interface NewSessionBeanRemote {
public String SayHello(String s);
}
NewSessionBean.java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package newpackage;
import javax.ejb.Stateless;
/**
*
* @author zy
*/
@Stateless
public class NewSessionBean implements NewSessionBeanRemote {
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")
public String SayHello(String s)
{
return (s);
}
}
index.jsp:
<%--
Document : index
Created on : Mar 17, 2010, 2:18:57 PM
Author : zy
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="newpackage.NewSessionBeanRemote,javax.naming.*,java.util.Properties"%>
<!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=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
try
{
InitialContext ctx = new InitialContext();
NewSessionBeanRemote hello=(NewSessionBeanRemote)ctx.lookup("newpackage.NewSessionBeanRemote");
out.println(hello.SayHello("Hello"));
}
catch(NamingException e)
{
out.println(e.getMessage());
}
%>
</body>
</html>