`
suhuanzheng7784877
  • 浏览: 702480 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47708
社区版块
存档分类
最新评论

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

阅读更多

以上好像还看不出什么,那么咱们开发一个web程序作为测试用例

建立一个web项目,将jbossclient文件夹下面所有的jar包都拷贝进此web项目中。

Index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head></head>

    <body>

       <form name="form1" method="post" action="buy.jsp">

           <label>

              <input type="checkbox" name="items" value="suhuanzhen">

              素还真

           </label>

           <label>

              <input type="checkbox" name="items" value="yexiaochai">

              叶小钗

           </label>

           <label>

              <input type="checkbox" name="items" value="heibailangjun">

              黑白郎君

           </label>

           <br>

           <label>

              <input type="submit" name="Submit" value="提交">

           </label>

       </form>

 

    </body>

</html>

Buy.jsp

<%@ page language="java"

    import="java.util.*,javax.naming.*,ejb.sessionBean.*"

    pageEncoding="utf-8"%>

<%

    ShopService shopService = (ShopService) session

           .getAttribute("ShopService");

 

    if (shopService == null) {

 

       Context context = null;

 

       String init_factory = "org.jnp.interfaces.NamingContextFactory";

       String serverURL = "jnp://127.0.0.1:1099";

 

       Properties properties = new Properties();

       properties.put(Context.INITIAL_CONTEXT_FACTORY, init_factory);

 

       properties.put(Context.URL_PKG_PREFIXES,

              "org.jboss.naming:org.jnp.interfaces");

 

       properties.put(Context.PROVIDER_URL, serverURL);

 

       context = new InitialContext(properties);

 

       shopService = (ShopService) context

              .lookup("ShopServiceEAOImpl/remote");

 

       session.setAttribute("ShopService", shopService);

 

    }

 

    String[] items = request.getParameterValues("items");

 

    for (String itme : items) {

       shopService.addItem(itme);

    }

 

    System.out.println(shopService.showItems());

%>

<a href="index.jsp">[重新选购]</a>

|

<a href="removeBean.jsp">[销毁EJB回话Bean]</a>

removeBean.jsp

<%@ page language="java"

    import="java.util.*,javax.naming.*,ejb.sessionBean.*"

    pageEncoding="utf-8"%>

<%

    ShopService shopService = (ShopService) session

           .getAttribute("ShopService");

 

    if (shopService == null) {

 

       Context context = null;

 

       String init_factory = "org.jnp.interfaces.NamingContextFactory";

       String serverURL = "jnp://127.0.0.1:1099";

 

       Properties properties = new Properties();

       properties.put(Context.INITIAL_CONTEXT_FACTORY, init_factory);

 

       properties.put(Context.URL_PKG_PREFIXES,

              "org.jboss.naming:org.jnp.interfaces");

 

       properties.put(Context.PROVIDER_URL, serverURL);

 

       context = new InitialContext(properties);

 

       shopService = (ShopService) context

              .lookup("ShopServiceEAOImpl/remote");

 

       session.setAttribute("ShopService", shopService);

 

    }

    shopService.removeForClient();

session.removeAttribute("ShopService");

%>

<a href="index.jsp">[重新选购]</a>

Index.jsp是选购人物页面,buy.jsp是调用业务处理逻辑,removeBean是显示的让服务器销毁会话Bean对象。将此项目发布到tomcat中运行,效果如下

 

选中“素还真”提交

客户端控制台如下

 

{suhuanzhen=1}

之后在选择素还真、黑白郎君

控制台如下

 

{suhuanzhen=2, heibailangjun=1}

之后在选择素还真、叶小钗、黑白郎君

控制台如下

 

{suhuanzhen=3, yexiaochai=1, heibailangjun=2}

我们再看看服务端的控制台,以上3个操作造成了控制台信息如下

 

11:54:20,279 INFO  [STDOUT] 有状态SessionBeanShopServiceEAOImpl构造完毕

11:54:20,791 INFO  [STDOUT] buyInfo:{suhuanzhen=1}

11:55:27,100 INFO  [STDOUT] buyInfo:{suhuanzhen=2, heibailangjun=1}

11:56:07,511 INFO  [STDOUT] buyInfo:{suhuanzhen=3, yexiaochai=1, heibailangjun=2}

之后让另一台计算机或者另一个浏览器——火狐访问你这个tomcatweb应用,重新选择素还真控制台“累计”信息如下

 

{suhuanzhen=1}

{suhuanzhen=2, heibailangjun=1}

{suhuanzhen=3, yexiaochai=1, heibailangjun=2}

{suhuanzhen=1}

之后本机再次重新选择素还真,控制台信息如下

 

{suhuanzhen=1}

{suhuanzhen=2, heibailangjun=1}

{suhuanzhen=3, yexiaochai=1, heibailangjun=2}

{suhuanzhen=1}

{suhuanzhen=4, yexiaochai=1, heibailangjun=2}

由此观之,就像HttpSession一样,有状态的SessionBean各自维护自己客户端的实例的变量状态。不同的客户端,sessionBean的实例变量不会互相干扰,各干各的。当然,如果调用了远程方法,销毁了有状态的会话Bean的时候也要将您httpSession中的会话对象删除掉,这样才能够让远程SessionBean重新创建对象和实例变量啊。

  • 大小: 38.3 KB
分享到:
评论

相关推荐

    JavaEE5学习笔记07-Web层与EJB集成总结

    ### JavaEE5学习笔记07-Web层与EJB集成总结 #### 一、JavaEE5框架中的Web层与EJB集成概述 在JavaEE5(即Java Platform, Enterprise Edition 5)中,Web层与EJB(Enterprise JavaBeans)的集成是构建企业级应用的...

    JavaEE5学习笔记02-JNDI与RMI

    在JavaEE环境中,RMI经常与EJB结合使用,尤其是无状态SessionBean,因为它们不需要维持客户端的会话状态,适合RMI的轻量级通信模式。 当一个EJB被标记为远程接口时,它可以通过RMI在不同 JVM(Java Virtual ...

    javaee思维导图版笔记-吉林大学

    "javaee思维导图版笔记-吉林大学" 本笔记主要涵盖了Java EE的基础知识,包括Servlet、JSP、JNDI、JPA等方面的内容。 一、Servlet概述 Servlet是Java EE中的一种服务器端组件,用于处理HTTP请求并返回响应。...

    javaee学习笔记

    - **会话Bean**:在整个用户会话期间保持,用于跟踪用户状态。 - **应用Bean**:在整个应用程序范围内共享,用于全局数据。 **自定义标签(Custom Tags)**提供了一种扩展JSP语法的方式,通过定义标记库描述符(TLD...

    JavaEE2017最新版基础班学习笔记

    包括会话Bean(Session Beans)负责业务逻辑,实体Bean(Entity Beans)作为持久化对象,以及消息驱动Bean(Message-Driven Beans)处理JMS消息。 6. **JMS (Java Message Service)**:JMS允许应用程序之间异步通信...

    Java/JavaEE 学习笔记

    Java/JavaEE 学习笔记 作者在杰普学习时的学习笔记,是J2ee初学者必备手册,是大家学习J2EE开发的很好的参考笔记。 Java/JavaEE 学习笔记 内容目录: Unix 学习笔记..........7 一、Unix前言............7 二、...

    JavaEE学习笔记

    EJB是JavaEE的核心,提供了三种类型的Bean:会话Bean(Session Beans)处理业务逻辑,实体Bean(Entity Beans)代表持久化数据,消息驱动Bean(Message-Driven Beans)处理消息队列。Spring框架则以其依赖注入和面向...

    JavaEE基础笔记.zip

    分为会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-driven Beans),分别处理业务逻辑、持久化数据和消息通信。 5. **JMS(Java Message Service)**:JMS是JavaEE的消息中间件接口...

    J2EE学习笔记(J2ee初学者必备手册)

    第四章 Session Bean(会话Bean).....322 第五章 消息驱动Bean(MDB).........327 EJB3.0.....329 第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean...

    达内培训笔记

    - **EJB(Enterprise JavaBeans)**:分为会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-driven Beans),用于实现业务逻辑和持久化数据。 - **JPA(Java Persistence API)与ORM*...

    javaWeb学习笔记+狂神说

    EJB是Java企业级应用的组件模型,分为会话bean、实体bean和消息驱动bean。它们提供了一种在分布式环境中构建可复用的、事务处理的服务器端组件的方法。虽然现代JavaEE应用更多采用轻量级框架如Spring,但了解EJB的...

    JAVA-EE-master (4).zip

    EJB分为三种类型:会话bean(Session Beans)处理客户端请求,实体bean(Entity Beans)代表持久化的业务对象,消息驱动bean(Message-Driven Beans)用于处理JMS消息。 4. **JMS**:Java Message Service允许在...

Global site tag (gtag.js) - Google Analytics