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

📄 ejb2.html

📁 写给JSP初级程序员的书
💻 HTML
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META name="description"  content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords" content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
        applet, applets, directory, news, jdbc, applications, 
        Java applications, Java developer, Java development, developer, 
        classes, Jars.com, Jars, intranet, Java applet, Javabeans, 
        Java products, JDK, Java development kit, java development environment, JIT,
        JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, 
        SUN, CGI, Perl, database, network, html,
        xml, dhtml, rating, ratings, review, jars, cgi, programming,
        software review, software rating">
<title>csdn_EJB 入门(2)理解EJB组件</title>
<style>
.news {   BACKGROUND: #007cd3;  font-family: "宋体"; font-size: 9pt }
.t {  font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3;  font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A {text-decoration: underline}
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>
<body 
  <CENTER>
          
    <!--start first table -->
     
      <TR>          
          <TD WIDTH="100%" VALIGN="TOP" >            
            
               <TR>
                   <TD  WIDTH="100%" CLASS="white"></TD>
               <TR>               
                           
               <TR>
                   <TD WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align=center nowrap >EJB 入门(2)
                   </TD>
                   <p></p>                                        
               <TR>                              
               <TR>                   
                   <TD WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan=2>
        
       理解EJB组件
<br>
<br>  你现在应该已经熟悉了整个EJB体系结构及其主要的部件。这一节更详细地描述了这些部件,并解释它们运行时的行为语意。 Home接口  EJB库使用enterprise bean的客户端通过它的home接口创建它的实例。Home接口包含一或多个用来创建enterprise bean实例的create()方法。这个home接口不是由bean来现,而是通过称为home object的类来实现。一个home object的实例在服务器中实例,使得客户端可以访问它们。
<br>
<br>  定位home object 一个home object的引用被放在名字服务中,客户端能通过JNDI访问它。EJB服务器一般提供某种名字空间的实现,虽然有时可以使用外部的名字空间。在这两种情况下客户端都必须知道名字空间的位置以及JNDI的上下文类。例如,一个客户端的applet可能接收名字空间和JNDI上下文类作为applet的参数。除了提供位置和类名,客户端也必须知道在名字树中定位home object.这些必须在客户端启动时提供。当部署者把enterprise bean部署进EJB服务器中时,他必须可以以参数形式指定名字树,如ejb/accounting/AccountsPayable.客户端必须获得这个完整的路径名来定位并获得AccountsPayable home object的引用。并不是说客户端通过JNDI获得容器。客户端使用JNDI查找home接口的实现。Home接口的实现由某个特殊的container来提供,但这是该容器厂商的细节,enterprise bean开发者和客户端应该忽略它。
<br>
<br>Home接口中的方法
<br>
<br>  Enterprise bean开发者定义ejbCreate()方法的同时必须在home接口中声明与其相应的create()方法。实体bean可以包含finder方法以使得客户端能定位已有的实体bean.
<br>
<br>  Home接口是通过继承javax.ejb.EJBHome来定义的。该接口包含如下的方法:
<br>public interface javax.ejb.EJBHome extends Remote {
<br>public EJBMetaData getEJBMetaData() throws RemoteException;
<br>public void remove(Handle handle) throws
<br>RemoteException,RemoveException;
<br>public void remove(Object primaryKey) throws
<br>RemoteException,RemoveException;
<br>
<br>  一个bean的home接口可以象下面这样:
<br>public interface myHome extends EJBHome {
<br>public myRem create() throws RemoteException,CreateException;
<br>public myRem create(String str) throws
<br>RemoteException,CreateException;
<br>
<br>  其中public interface myRem extends EJBObject { … }容器开发商负责提供实现home接口的home对象,因为只有开发商才能实现存贮enterprise bean的库的编码。容器定义容器在理解EJB规范时容器这个术语并不应从字面上简单地理解为类,而是一层代替bean执行相应服务的接口。容器开发商提供运行在EJB服务器中一套完成这些功能的工具和接口。
<br>
<br>  这些服务包括:?与二级存储中交换(对会话bean)
<br>?持久性管理(对实体bean)
<br>?实现创建和查找服务的home object的可用性
<br>?在可通过JNDI访问的名字空间home object的可视性
<br>?正确的创建、初始化和删除bean
<br>?保证商业方法正确地运行在事务上下文中
<br>?实现某一基本的安全服务
<br>?从home object和EJBObject上的RMI上产生stub和skeleton
<br>
<br>  容器和EJBObject对规范经常引用由容器或EJBObject提供的服务。这些服务只是用来说明而不暗示特殊类的服务需求。支持enterprise bean的EJBObject和容器类都由容器开发商提供。这些类必须完成bean容器的功能。对bean来说容器和EJBObject是不同的入口点,对某个特殊的服务提供支持独特的能力。例如,容器通过读部署描述符来知道应用于bean方法的事务属性。然而,这些商业方法通过EJBObject调用。EJBObject必须与容器通讯来确定调用商业方法的事务上下文。确定以后,EJBObject在调用商业方法以前建立事务上下文。重要的是EJBObject 和容器的协同工作来实现容器所需的事务。容器厂商提供二者的实现,但对二者的功能分割却是自由的。与home接口的关系
<br>
<br>  目前厂商提供工具来读home 接口并产生作为容器的home object.在这种情况下厂商对每个enterprise bean类使用不同的容器类。容器厂商可以使用其它的实现策略,如一个容器类实现多个home接口,甚至一个标准的容器类创建独立的home object实现。唯一的必要条件是容器厂商必须使客户端能通过JNDI访问home object. 客户端和bean开发者都不需关心容器和home object的实现细节。Enterprise JavaBeanEnterprise bean是开发者编写的提供应用程序功能的类。开发者可以选择创建会话bean或实体bean,通过实现不同的接口声明其部署描述符来加以区分。
<br>
<br>对于会话bean:
<br>public class myBean implements javax.ejb.SessionBean …
<br>对于实体bean:
<br>public class myBean implements javax.ejb.EntityBean …
<br>
<br>  客户端不会直接访问enterprise bean中的任何方法。客户端通过EJBObject 间接调用bean中的方法,EJBObject就象一个代理一样。在把调用通过EJBObject传递时,容器开发商通过包装编码插入其自?
                   </TD>                   
               <TR>                 
               
            </TD>            
     </TR>
     </center>
</body> 
</html>

⌨️ 快捷键说明

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