J2EE学习笔记四:开发第一个Session Bean

Java Web(J2EEEJB 2. J2EEEJB 2.1 什么是J2EE 是java平台企业版简称,用来开发与部署企业级应用的架构,提供一种统一的、开放标准的多层平台,主要由构件、服务和通信组成。 构件包含客户端构件和服务器构件,客户端构件主要包含两类Applets和Application Clients,服务器构件分为两类Web构件(servlet和JSP)和EJBs两种。 本质上J2EE只是一个行业标准,主要用来通过java开发服务器端应用提供一个独立的、可移植的、多用户的企业级平台,从而能简化应用程序的开发和部署。 2.2 J 阅读详情

一、基础知识

要开发一个Session Bean,我们需要创建两个Java接口和一个Java类,这些接口和类分别叫做:home interfacebean interfacebean class,如下图所示:

Home Interface:为了让session bean的客户端能够获得一个它的bean接口的引用,我们必须要使用beanHome Interface。一个EJBHome Interface必须继承EJBHome接口,这个接口来自于javax.ejb包。

Bean Interfacesession bean通过一个接口来向客户端暴露它的business method,这个接口就是Bean InterfaceBean Interface必须继承EJBObject接口,它也来自于javax.ejb包。

Bean Classsession bean的所有商业逻辑都是在Bean Class中实现的,所有的Bean Class都实现了SessionBean接口,它也来自于javax.ejb包。

       Home Stub & Bean Stub:上图中的那些stub被客户端用来调用位于服务器端的EJB中的方法。Stub通过RMI来调用服务器端它们对应的接口。

二、开发一个简单的Session Bean

按照上面所说的,首先创建1Home Interface1Bean Interface1Bean Class,它们的代码如下所示:

SimpleSessionHome.javaHome Interface

package beans;

import java.rmi.RemoteException;

import javax.ejb.EJBHome;

import javax.ejb.CreateException;

/**

 * @author CMTobby 2007-11-11

 * 这个类是一个Home Interface,它的主要作用是让客户端获得一个EJBBean  

   interface的引用<br>

 * 所有的Home Interface必须实现javax.ejb.EJBHome接口

 */

public interface SimpleSessionHome extends EJBHome {

    //The create() method for the SimpleSession bean

    public SimpleSession create() throws CreateException, RemoteException;

}

SimpleSession.javaBean Interface

package beans;

 

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

/**

 * @author CMTobby 2007-11-11 <br>

 * 这时一个Bean Interface,它的主要作用是向客户端暴露EJBBusiness Method<br>

 * 所有的Bean Interface都必须实现javax.ejb.EJBObject接口

 */

public interface SimpleSession extends EJBObject{

    //The public business method on the SimpleSession bean

    public String getEchoString(String clientString) throws RemoteException;

}

 

SimpleSessionBean.javaBean Class

package beans;

 

import java.rmi.RemoteException;

 

import javax.ejb.EJBException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

 

/**

 * @author CMTobby 2007-11-11<br>

 * 这是一个Bean Class它负责具体实现所有的Bussiness Mehotd.<br>

 * 所有的Bean Class都必须实现javax.ejb.SessionBean接口

 */

public class SimpleSessionBean implements SessionBean {

    public void ejbActivate() throws EJBException, RemoteException {

    }

    public void ejbPassivate() throws EJBException, RemoteException {

    }

    public void ejbRemove() throws EJBException, RemoteException {

    }

    public void ejbCreate() {}

    public void setSessionContext(SessionContext arg0) throws EJBException,

           RemoteException {

    }

    /**

     * EJB中的Bussiness Method。在远程接口中必须也有这个方法。<br>

     * @param clientString 来自于客户端的信息

     * @return

     */

    public String getEchoString(String clientString) {

    return clientString + " - from session bean";

    }

}

二、部署EJB

我用的Application ServerSun免费提供的PE(Platform Edition),为了将我们上面所写的一个简单的EJB部署到Server上需按照如下步骤(我用的IDEEclipse)

1.  从程序中启动Application Server,如下图所示:

2.  仍然是在上图中,点击Deploytool菜单,打开部署工具,界面如下所示:

3.  在上图中,点击【File---New---Application】,出现如下界面:

       这里将会创建一个EAR文件,EAREnterprise Application Resource的缩写,它包含了一个J2EE应用的所有组件,类似于一个War文件包。在上图中我们要指定EAR文件名字和路径,我取的名字是SimpleSessionApp.ear。此时DeployTool将会在指定的路径为我们生成一个ear文件,它里面的内容基本是空的,只有几个配置文件。

    4.在步骤2中的菜单中,选择【File---New---Enterprise Bean】,点击【next】来到如下的界面:

       在上图中我们指定了这个Bean Jar的名字为SimpleSessionJar,同时也指定了它存放的位置:存放在我们刚才新建的ear文件中,如上图中红色矩形所示。

      5.上图中点击Edit Contents按钮,可以选择要放入Jar中的class文件,如下图所示:

   

       如上图所示,我选择了前面3Java文件编译之后产生的class文件,然后点击add按钮将它们加入到bean jar中,最后点击OK按钮。这里要注意,在选择class时,上面的Starting Directory是支持手写的,它会默认显示为ear文件所在的目录。

       6.上图中点击OK,再点击Next,来到如下界面:

       Enterprise Bean Class下拉列表中选择beans.SimpleSessionBean,从Enterprise Bean Type下拉表中选择Stateless Bean,从Remote Home Interface下拉列表中选择beans.SimpleSessionHome,从Remote Interface中选择beans.SimpleSessionEnterprise Bean Name是我们想让它在EJB工具中显示的名称,我取名为SimpleSessionEjb

       7.现在一路狂奔,点击Next,直到最后的Finish

8.为EJB指定对应的JNDI名,以便客户端得到它的引用。点击主界面上的Sun-specific settings按钮,进入如下界面:

在上图中红色矩形框所示处输入我们命名的JNDI名称,这里我们的是:ejb/beans.SimpleSession。点击Close,然后保存。

       9.从步骤2所示的图中选择Tool菜单下的Verify J2EE Compliance功能,对应用进行校验,这里就不多说了。

       10.选择Tool菜单下的Deploy,出现如下界面:

         输入用户名、密码,选中Return Client Jar,点击OK即可。这一步会在我们指定的目录下生成一个Jar文件,这个Jar文件的命名规则是:应用名+Client.jar,如本例中就是SimpleSessionAppClient.jar

    现在,我们的EJB就已经部署成功了,并可供客户端调用。

三、测试部署是否成功

为了测试上面的部署是否成功,可以写一个程序来进行测试,如下所示:

SimpleSessionClient.java

package client;

 

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

 

import beans.SimpleSession;

import beans.SimpleSessionHome;

 

/**

 * @author CMTobby 2007-11-11

 */

public class SimpleSessionClient {

    public static void main(String[] args) {

       try {

           InitialContext jndiContext = new InitialContext();

           // Get a reference to the SimpleSession JNDI entry

           Object ref = jndiContext.lookup("ejb/beans.SimpleSession");

           // Get a reference from this to the Bean's Home interface

           SimpleSessionHome home = (SimpleSessionHome) PortableRemoteObject

                  .narrow(ref, SimpleSessionHome.class);

           // Create a SimpleSession object from the Home interface

           SimpleSession simpleSession = home.create();

           // Loop through the words

           for (int i = 0; i < args.length; i++) {

              String returnedString = simpleSession.getEchoString(args[i]);

              System.out.println("sent string: " + args[i]

                     + ", received string: " + returnedString);

           }

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

}

将之前部署过程中产生的SimpleSessionAppClient.jarj2ee.jarappserv-rt.jar加入到classpath中,然后指定参数为now is the time,运行成功,输入如下:

sent string: now, received string: now - from session bean

sent string: is, received string: is - from session bean

sent string: the, received string: the - from session bean

sent string: time, received string: time - from session bean

    这样,我们就成功完成了我们第一个Session Bean的开发。

 
J2EE平台 J2EE(Java 2 Platform, Enterprise Edition)为构建复杂的企业级应用提供了全面的技术支持和规范标准。自从上世纪末推出以来,J2EE 已经成为中不可或缺的一部分。它通过组件化、多层次的分布式应用模型,允许开发者构建具有的企业级解决方案。J2EE平台的核心特性是它能够的企业级应用。J2EE 是针对 Web Service、业务对象、数据访问和消息报传送的一组规范。这组应用编程接口确定了 Web 应用与驻留它们的服务器之间的通信方式。 阅读详情

相关推荐

学习SessionBean

有关SessionBean学习笔记,这是个人的学习总结,希望对大家有用。

分别介绍一下Session BeanEntity Bean

Session beans:   Session beans 是一种作为单个的client执行的对象。作为对远程的任务请求的相应,容器产生一个Session beans 的实例。一个Session beans有一个client.从某种程度上来说,一个Session bean 对于服务器来说就代表了它的那个client.Session beans 也能用于事务,它能够更新共享的数据,但它不直接描绘这...

jardownload的博客 271

EJB3图文教程之开发Session Bean

EJB3图文教程之开发Session Bean

J2EE中 实体BEAN和会话BEAN的区别

    一个session bean 代表与客户程序的一个短暂的会话,而且可能执行数据库读写操作。一个session bean 可能会自己调用JDBC ,或者它可能使用entity bean 来完成此种调用。在后者这种情况下,这个session bean 是该entity bean 的客户。一个session bean 的域包含会话状态,而且是短暂的。如果服务器或者客户程序崩溃,该session

::: 移动互联网时代开发者 ::: 6537

会话EJB系列(三)SessionBean生命周期

EJB生命周期:指EJB在运行过程中经历的阶段和状态。 首先强调的是:SessionBean的生命周期是由容器控制的而不是应用程序!但是对于开发者而言,必须了解SessionBeanEJB中的运行规律,才可以更好的管理SessionBean

chestnut 2321

JavaEE5学习笔记05-EJB之会话Bean(sessionBean)总结-----6

BMT就是Bean自己管理事务,这种方式就是以硬编码的方式在Bean中自己通过JTA接口自己维护事务代码,开始事务、提交事务、回滚事务都需要自己以硬编码的方式来维护,这种方式就是一个优点,灵活,不过EJB规范不建议使用此策略来管理事务,而是采用CMT。 代码如下: package ejb.sessionBean.impl;    /**  * bean代码自管理事务  *  ...

suhuanzheng7784877的专栏 282

ejb三种bean之会话bean

会话bean(session bean),可以分为无状态会话bean和有状态会话bean   负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. •无状态会话bean  平

yjsuge的专栏 1036

基于Spring+session bean+hibernate的j2ee开发

以前一直使用spring+hibernate的方式,近来随着应用系统的增加,各系统之间又要求能够相互调用,因此决定加入session bean。1、EJB类首先继承于org.springframework.ejb.support.AbstractStatelessSessionBean,使用此类可以简化一些操作,只需实现onEjbCreate即可:    protected void onEjbC

大笨熊的专栏 1578

Session Bean

很多人说,不采用EJB的系统不算是J2EE系统。EJB到底有哪些用处,很难说清楚,一人一个说法。我要说的是EJBSession Bean,用在远程调用。说道远程调用,很多人联想到RMI,这个RMI是个笼统的概念,怎么实现就有很多选择了:比如MBean,WebService等。显然,我这里选择的是ejb,就是SessionBean实现RMI。 工具:NetBeans6.1及自带

wjjdlove的专栏 2859

【JavaEE】Bean的作用域和生命周期

1. Bean的作用域共分为6种: singleton, prototype, request, session, application和websocket. 2. Bean的生命周期共分为5大部分: 实例化, 属性复制, 初始化, 使用和销毁

m0_74105656的博客 1483

Session Bean的使用

学习使用JavaBeansessionbean,以及学习EJB的编程

session中的bean监听

博客地址:https://blog.csdn.net/qq_36631076/article/details/80320296 属性监听和bean监听的区别: 属性监听:是对三个容器中的任何属性(包括对象和不是对象的数据,基本类型数据)的变化,进行监听 Bean监听:它只监听javabean对象往session中保存和session中移出的过程。 bean监听不需要专门写一个监听器,它是将需要监听的javabean对象实现我们的接口HttpSessionBindingListener 从使用上它不同于前面两个监听器的学习,但给我们的感觉就是一个属性监听的vip用户,这个vip用户是一个JavaBean

J2ee缩写名词解释

J2EE平台是由一整套服务(Services)、应用程序接口(APIs)和协议构成;其主要包含13种技术规范:1JDBC 2 J2EE包括以下技术:EJB:EnterpriseJavaBeans企业JavaBean组件IDL:InterfaceDefinitionLanguage接口定义语言JMS:JavaMessageServiceJava...

as_df99031的博客 157

java ee ejb_javaEE-EJB学习笔记

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (EnterpriseJavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(...

weixin_29104059的博客 321

Stateful Session Bean VS Entity Bean

作为一名更熟悉 .NET的人员来讲对于Bean比较陌生,但认真思考J2EE中讲到的各种规范.NET也应该具备,因为这毕竟是企业级开发共有的要求。 1.理解Stateful Session Bean    比较好的一篇文章是http://www.jguru.com/faq/view.jsp?EID=917。方便起见原文拷贝在此以便学习。  Richard Monson-Haefel

albertliangyg的专栏 408

J2EE 技术简述

J2EE Java2平台企业版(Java 2 Platform,Enterprise Edition) J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。 J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好...

nenty的专栏 989

【进阶EJB】深入探讨三种Bean(一)——Session Bean

什么是Session Bean? Session Bean是用于实现业务逻辑的,每当客户发出一个请求的时候,容器就会选择一个Session Bean来为客户端服务,客户端通过调用Session Bean的方法来访问部署在服务器上的应用程序.Session Bean通过完成客户端的请求,从而对客户端隐藏了服务器内复杂逻辑的执行过程。 需要使用Session Bean的情况: 在任何给定的时间,只有一个客户端访问这个Bean的实例;Bean的状态不需要持久保存,只在一个时间段(可能是几个小时)内

不忘初心 6249

测试开发进阶——常用中间件概念——会话Bean(SessionBean),实体Bean(Entity Bean)、消息驱动Bean(MessageDriven Bean)——EJB三种企业Bean的理...

EJB——EnterpriceJavaBeans:是一个用于分布式业务应用的标准服务端组件模型。 采用EJB架构编写的应用是可伸的、事务性的、多用户安全的。可以一次编写这些应用,然后部署在任何支持EJB规范的服务器平台,如JBoss、WebLogic。 EJB定义了三种企业Bean——会话Bean(SessionBean),实体Bean(Entity Bean)、消息驱动Bean(Message...

小白龙白龙马的博客 1212
上一篇: J2EE学习笔记三:EJB基础概念和知识
下一篇: J2EE学习笔记五:entity bean概念
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值