⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0009.htm

📁 关于java的开发文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>开发EJB(下)</strong></big></p>

<div align="right">---(文/ilamei)</div>

<br>EJBHome的基类:
<br>
<br>
  每一个Home接口都扩展了javax.ejb.EJBHome接口。如下代码显示了javax.ejb.EJBHome接口的定义:
<br>
<br>
package javax.ejb;
<br>
<br>
<br>
public interface EJBHome extends java.rmi.Remote() {
<br>
<br>
void remove(Handle handle) throws java.rmi.RemoteException,RemoveException;
<br>
<br>
void remove(Object primarykey) throws java.rmi.RemoteException,RemoveException;
<br>
<br>
EJBMetaData getEJBMetaData() throws RemoteException;
<br>
<br>
Homehandle getHomeHandle() throws RemoteException;
<br>
<br>
}
<br>
<br>
<br>
  这里提供了两个remove()方法来删除Enterprise bean的实例。第一个remove方法是通过句柄来删除一个Enterprise bean的实例。第二个remove方法通过主键来删除一个Enterprise bean的实例。
<br>
<br>
<br>
  在众多的Enterprise bean实例中,句柄唯一的标识一个实例。一个句柄与它引用的Enterprise bean有相同的生命期。考虑一个实体对象,客户可以通过一个句柄来重新获得相应的Enterprise bean的实例。一个句柄能够对应一个Enterprise bean对象的多个实例。例如,即使当Enterprise bean对象所在的主机崩溃了,或者Enterprise bean对象在不同的机器之间移动,句柄仍是有效的。这里的句柄是Serialized句柄,与CORBA中的字符串化的CORBA对象的引用是相似的概念。
<br>
<br>
  在EJBHome接口中的第二个remove操作通过其主键来决定要删除的Enterprise bean。主键可以是扩展了Java Object类的任何类型,但是,必须要实现Java的Serializable接口。主键是标识实体bean的主要的方法。通常,主键是数据库中的一个关键字,唯一的定义了由实体bean代表的数据。
<br>
<br>
  方法getEJBMetaData()返回了Enterprise bean对象的metadata接口。这个接口允许客户获得Enterprise bean的metadata信息。当开发工具来编译链接应用程序的时候,或者配置工具来配置的时候,可能会用到metadata信息。Javax.ejb.EJBMetadata接口提供了获得javax.ejb.EJBHome接口,home类,remote接口,还有获得主键的方法。也提供了一个isSesson()的方法来确定在放这个home接口的对象是会话bean还是实体bean。IsStatelessSession()方法指示这个会话bean是有状态还是无状态的。如下代码显示了javax.ejb.EJBMetadata接口的定义部分的代码。
<br>
<br>
Public javax.ejb;
<br>
<br>
Public interface EJBMetaData{
<br>
<br>
EJBHome getEJBHome();
<br>
<br>
Class getHomeInterfaceClass();
<br>
<br>
Class getRemoteInterfaceClasss();
<br>
<br>
Class getPrimaryKeyClass();
<br>
<br>
Boolean isSession();
<br>
<br>
Boolean isStatelesssSession();
<br>
<br>
}
<br>
<br>
<br>
会话bean的home接口:
<br>
<br>
  在前面我们说过,一个会话bean只有一个客户。这就是说,当一个客户创建一个会话bean的时候,这个会话bean的实例只是为了这个创建它的客户而存在(这里,我们指的是有状态的会话bean。无状态的会话bean因为并不保持会话的状态,所以可以多个客户)。
<br>
<br>
  因为home 接口包括了一个或多个的Create()方法的定义,成为会话bean的工厂。对每一个Create()方法,EJB规范定义了如下的命名约定:
<br>
<br>
<br>
它的返回值是会话bean的remote接口的类型。
<br>
<br>
<br>
方法的名字只能是Create()。
<br>
<br>
<br>
对会话bean类中的每一个ejbCreate()方法都必须有一个Create()与之对应。
<br>
<br>
<br>
对于每一个Create()方法的参数的类型和数量都必须与会话bean类中的ejbCreate()方法相对应。
<br>
<br>
<br>
方法必须抛出java.rmi.RemoteException例外。
<br>
<br>
<br>
方法必须抛出javax.rmi.CreateExeption例外。
<br>
<br>
<br>
Create()方法的参数是用来初始化新的会话bean对象的。
<br>
<br>
<br>
如下代码显示了一个会话bean对象的不同的Create()方法,其中必须的部分用粗体显示:
<br>
<br>
public interface AtmHome extends javax.ejb.EJBHome{
<br>
<br>
Atm create() throws java.rmi.RemoteException,javax.ejb.CreateException;
<br>
<br>
Atm create(Profile preferredProfile)
<br>
<br>
Throws java.rmi.RemoteExeption,javax.ehrows java.rmi.RemoteException,RemoveException;
<br>
<br>
EJBMetaData getEJBMetaData() throws RemoteException;
<br>
<br>
Homehandle getHomeHandle() throws RemoteException;
<br>
<br>
}
<br>
<br>
<br>
  这里提供了两个remove()方法来删除Enterprise bean的实例。第一个remove方法是通过句柄来删除一个Enterprise bean的实例。第二个remove方法通过主键来删除一个Enterprise bean的实例。
<br>
<br>
<br>
  在众多的Enterprise bean实例中,句柄唯一的标识一个实例。一个句柄与它引用的Enterprise bean有相同的生命期。考虑一个实体对象,客户可以通过一个句柄来重新获得相应的Enterprise bean的实例。一个句柄能够对应一个Enterprise bean对象的多个实例。例如,即使当Enterprise bean对象所在的主机崩溃了,或者Enterprise bean对象在不同的机器之间移动,句柄仍是有效的。这里的句柄是Serialized句柄,与CORBA中的字符串化的CORBA对象的引用是相似的概念。
<br>
<br>
  在EJBHome接口中的第二个remove操作通过其主键来决定要删除的Enterprise bean。主键可以是扩展了Java Object类的任何类型,但是,必须要实现Java的Serializable接口。主键是标识实体bean的主要的方法。通常,主键是数据库中的一个关键字,唯一的定义了由实体bean代表的数据。
<br>
<br>
  方法getEJBMetaData()返回了Enterprise bean对象的metadata接口。这个接口允许客户获得Enterprise bean的metadata信息。当开发工具来编译链接应用程序的时候,或者配置工具来配置的时候,可能会用到metadata信息。Javax.ejb.EJBMetadata接口提供了获得javax.ejb.EJBHome接口,home类,remote接口,还有获得主键的方法。也提供了一个isSesson()的方法来确定在放这个home接口的对象是会话bean还是实体bean。IsStatelessSession()方法指示这个会话bean是有状态还是无状态的。如下代码显示了javax.ejb.EJBMetadata接口的定义部分的代码。
<br>
<br>
Public javax.ejb;
<br>
<br>
Public interface EJBMetaData{
<br>
<br>
EJBHome getEJBHome();
<br>
<br>
Class getHomeInterfaceClass();
<br>
<br>
Class getRemoteInterfaceClasss();
<br>
<br>
Class getPrimaryKeyClass();
<br>
<br>
Boolean isSession();
<br>
<br>
Boolean isStatelesssSession();
<br>
<br>
}
<br>
<br>
<br>
会话bean的home接口:
<br>
<br>
  在前面我们说过,一个会话bean只有一个客户。这就是说,当一个客户创建一个会话bean的时候,这个会话bean的实例只是为了这个创建它的客户而存在(这里,我们指的是有状态的会话bean。无状态的会话bean因为并不保持会话的状态,所以可以多个客户)。
<br>
<br>
  因为home 接口包括了一个或多个的Create()方法的定义,成为会话bean的工厂。对每一个Create()方法,EJB规范定义了如下的命名约定:
<br>
<br>
<br>
它的返回值是会话bean的remote接口的类型。
<br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -