J2EE Server下的第一个EJB程序(图文进阶篇)
作者:翁驰原
编按:为了帮助国内J2EE初学者,写了这篇文章,期望能够对广大Java爱好者有所帮助。
文章内容:
1、本文一步步图文并茂的教读者配置出一个标准的J2EE开发环境
2、启动cloudscape数据库的cloudview,并建立数据库
3、让读者开发第一个EJB程序
4、设置EJB的datasource、部署应用程序等。
开发环境:
开发环境使用SUN的j2sdk1.4和j2sdkee1.3.1(注:关于j2sdk的版本,只要是1.3.1_02以后的都可以)。数据库:j2sdkee自带的cloudscape数据库。
第一、配置系统环境
确认你下载了j2sdk1.3.1_02以上的jdk版本和j2sdkee.1.3.1这些软件可以到sun的网站上去找可以看到首页就说明配置正确并成功启动了J2EE应用服务器。(如下图)
第二、启动数据库
加入如下的路径h:\j2sdkee1.3.1\lib\system\cloudutil.jar;h:\j2sdkee1.3.1\lib\cloudscape\cloudclient.jar;关键的问题出在如何调出cloudscape数据库的图形管理界面!你在命令行方式下敲入java COM.cloudscape.tools.cview很可能会出现错误。什么原因呢?第一、你要看看你的jdk版本对不对,是不是1.3.1_02以上或者1.4的。第二、关键中的关键,原来sun的j2ee里的cloudview是不能在他附带的cloudscape4.0.6下工作的(真不知道sun在搞什么东东 :))
h:\j2sdkee1.3.1\lib\cloudscape\rmijdbc.jar;h:\j2sdkee1.3.1\lib\system\cloudscape.jar;
这里是在ibm网站上的一句原话:The Java 2 SDK, Enterprise Edition v. 1.3.1 includes Cloudscape 4.0.6 butincludes a version of Cloudview which will not function with the 4.0.6 system。所以同志门就自己去下一个吧!这里还需要两个jar文件。下载地址是cloudview.jar和jd.jar把这两个文件放在j2sdkee1.3.1下的cloudscape目录下,我这里还需要加两个classpa 访问
第三、接下来开始写三个范例程序
分别是EmployeeHome.java、EmployeeBean.java、Employee.java。把这三个程序一起放在一个叫first的目录里(1) EmployeeHome.java这个文件实现了Home 接口。Home接口必须遵守以下的规定:(1)类型必须为interface。(2)必须是public。(3)至少要声明一个create()或者finder方法其中的一个。(4)create和finder方法必须包含java.rmi.RemoteException异常,finder方法必须另外包含java.ejb.FinderException异常。
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 interface 取得EJB Object的远端对象参考(Remote interface)什么是Remote interface呢?看下来的程序
(2)Employee.javapackage employee.com;这个文件实现了Remote接口。Remote接口必须遵守以下的规定:(1)类型必须为interface。(2)必须是public。(3)必须直接或者间接继承java.ejb.EJBObject。(4)声明的方法必须和Bean class里的方法一样。
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Employee extends javax.ejb.EJBObject {
public String getName()throws java.rmi.RemoteException;
}
(3) EmployeeBean.javapackage 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/
- 最新文章
- 一个使用J2ME技术实现的简单计算器[01-11]
- 如何开发基于JBoss的J2EE应用[01-11]
- 使用Java NIO提高服务端程序的性能[01-11]
- GT4 开发:从头开始进行相互的身份验证[01-11]
- J2ME游戏中的图片处理[01-11]
- J2ME Mobile 3D入门教程(三)碰撞初步[01-11]
- 相关文章
- 如何开发基于JBoss的J2EE应用[01-11]
- J2EE实战留言本(升级应用篇)[01-11]
- 在J2EE平台上开发企业应用[01-11]
- J2EE Web服务客户端质量报告(三)[01-11]
- .NET与J2EE大融合-JNBridgePro 3.0 发..[01-11]
- J2EE探索:有状态网络的J2EE技术[01-11]
