频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

J2EE Server下的第一个EJB程序(图文进阶篇)

来源:javaresearch 作者: 出处:巧巧读书 2007-12-16 进入讨论组
QQRead:http://www.qqread.com/j2ee/w610113012.html


第三、接下来开始写三个范例程序
分别是EmployeeHome.java、EmployeeBean.java、Employee.java。把这三个程序一起放在一个叫first的目录里
(1) EmployeeHome.java
package employee.com;
import java.util.Collection;

import java.rmi.RemoteException;
import javax.ejb.*;
public interface EmployeeHome extends javax.ejb.EJBHome {
public Employee create(String employeeID) throws DuplicateKeyException,javax.ejb.CreateException,java.rmi.RemoteException;

public Employee findByPrimaryKey(String employeeID ) throws ObjectNotFoundException,FinderException,RemoteException;

}
这个文件实现了Home 接口。Home接口必须遵守以下的规定:(1)类型必须为interface。(2)必须是public。(3)至少要声明一个create()或者finder方法其中的一个。(4)create和finder方法必须包含java.rmi.RemoteException异常,finder方法必须另外包含java.ejb.FinderException异常。
客户端利用Home interface 取得EJB Object的远端对象参考(Remote interface)什么是Remote interface呢?看下来的程序
(2)Employee.java
package employee.com;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface Employee extends javax.ejb.EJBObject {
public String getName()throws java.rmi.RemoteException;
}
这个文件实现了Remote接口。Remote接口必须遵守以下的规定:(1)类型必须为interface。(2)必须是public。(3)必须直接或者间接继承java.ejb.EJBObject。(4)声明的方法必须和Bean class里的方法一样。
(3) EmployeeBean.java
package employee.com;
import java.util.*;
import javax.ejb.*;

public class EmployeeBean implements EntityBean{
public String employeeID;
public String name;
private EntityContext context;
public void setEntityContext (EntityContext context){
this.context=context;
}
public void unsetEntityContext(){
context=null;
}
public String ejbCreate (String employeeID) throws DuplicateKeyException, CreateException{
this.employeeID=employeeID;
this.name="";
return null;
}

public void ejbPostCreate(String employeeID){
}

public void setName(String name){
this.name=name;
}

public String getName(){
return name;
}

public void ejbActivate(){
employeeID=(String) context.getPrimaryKey();
}

public void ejbPassivate(){
employeeID=null;
name=null;
}

public void ejbRemove(){
}

public void ejbLoad(){
}

public void ejbStore(){
}

}

以上是一个EntityBean 和一个远程接口和一个Home接口。
下面写一个JavaBean来调用EntityBean里的方法
EmployeeOut.java
package employee.beans;
import employee.com.*;
import java.util.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import javax.ejb.*;
import java.sql.*;

public class EmployeeOut{
private String id="";
private String name="";
EmployeeHome employeeHome=null;
public EmployeeOut() throws SQLException
{
try{
Context initial = new InitialContext();
Object objref=initial.lookup("ejb/EmployeeEntityBean");
employeeHome=(EmployeeHome)PortableRemoteObject.narrow(objref,EmployeeHome.class);

}catch (Exception ex){
throw new SQLException (ex.toString());
}
}

public String getName(String id) throws Exception
{
try
{
Employee employee=employeeHome.findByPrimaryKey(id);
name=employee.getName();
return name;

}
catch (ObjectNotFoundException notfoundex){
return "notfound";
}
catch (Exception ex){
throw ex;
}

}
}

dos方式下,更换工作目录至first目录,然后执行下列的编译指令:
javac -d . *.java (注d后面和*前面都有一个空格)
就可以在first下生成一个com目录和一个beans目录里面有编译好了的.class文件。
接下来写一个jsp文件,将jsp文件放在first目录下,通过调用JavaBean里的方法来简洁调用EntityBean里的方法。
login.jsp
<%@page language="java" import ="java.sql.*,employee.beans.*" contentType="text/html; charset=GB2312"%>
<jsp:useBean id="employee" scope="page" class="employee.beans.EmployeeOut">
</jsp:useBean>
<%
String name="";
String id=request.getParameter ("id");
if (id==null)
{
id="";
}
if (!id.equals(""))
{
name=employee.getName(id);
}
%>

<html>
<body bgcolor="#cccccc">





<form name="f1" action="login.jsp" method="post">
<table width=60% align="center">
<tr><td>编号:<input name=id value="" size=15></td>
<td>姓名:<%=name%></td></tr>
<tr><td>

</td></tr>
<tr><td clospan=2 align="center"><input type="submit" name="查询姓名"></td></tr>
</table>
</form>
</body>
</html>
第四、设置datasource 部署J2EE
用文本编辑工具打开%J2ee_home%\config\resource.properties文件,找到jdbcDataSource.4.name=jdbc/DB2
jdbcDataSource.4.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
这行,在这行下面加上
jdbcDataSource.5.name=jdbc/ExampleDB
jdbcDataSource.5.url=jdbc:cloudscape:rmi:ExampleDB;create=true
各个不同的J2ee版本的Datasource 设置文件不一样,以前的版本有的是在default.properties文件下设置的。
接下来用J2ee自带的部署工具部署应用程序,在dos窗口在键入%j2ee_home%\bin\deploytool打开deploytool工具
选择File---->New---->Application如图选择应用程序存放的地址和名字,名字以ear结尾。接下来输入显示名后按OK关闭小窗口。在左边的Frame里可以看到employeeDisName的符号。(如下图)
J2EE Server下的第一个EJB程序(图文进阶篇)(图八)
点击查看大图

用鼠标选上employeeDISName,选择File---->new Enterprise Bean,第一个屏幕是一些介绍,直接按Next,在第下面的屏幕如图,填写JAR Display Name为employeeJAR。
J2EE Server下的第一个EJB程序(图文进阶篇)(图九)
点击查看大图

在Contents面板点选旁边的Edit按钮,在弹出的窗口中的Starting Directory里选择first目录,用鼠标按住Ctrl键一起选择在下面的Avaliable Files里选择first下的employee下的com目录里的三个.class文件后,按Add按钮。这时在最下面的Contents of employeeJAR里就会出现这三个类文件。如下图
J2EE Server下的第一个EJB程序(图文进阶篇)(图十)
按OK键关闭窗口后在Contents面板里可以看到employee这个标志。按下next
在Bean Type里选择Entity,在Enterprise Bean Class里选择你的Bean Class EmployeeBean,在Remote Home Interface里选择EmployeeHome ,在Remote Interfaze里选择Employee如图后, 按下Next。
J2EE Server下的第一个EJB程序(图文进阶篇)(图十)
点击查看大图

进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章