当前位置:  技术问答>java相关

求教,Stateless session Bean会自动保存状态?

    来源: 互联网  发布时间:2015-04-09

    本文导语:  我用JBuilder编了一个Stateless SessionBean,部分代码如下:   public int oTimeout = 0;   public void setTimeouts(int iTimeout){       this.oTimeout += iTimeout;   }   public int getTimeouts(){     return this.oTimeout;   } 测试程序如...

我用JBuilder编了一个Stateless SessionBean,部分代码如下:
  public int oTimeout = 0;
  public void setTimeouts(int iTimeout){
      this.oTimeout += iTimeout;
  }

  public int getTimeouts(){
    return this.oTimeout;
  }

测试程序如下:
      Object ref = ctx.lookup("Project2");

      project2Home = (Project2Home) PortableRemoteObject.narrow(ref, Project2Home.class);
      project2Remote = project2Home.create();
      project2Remote.setTimeouts(200);
      project2Remote.setTimeouts(300);
      System.out.println(project2Remote.getTimeouts());

执行结果,第一次是500,第二次是1000!请问,如果要第二次也是500怎么做?

|
什么是stateless?我认为就是bean developer和别的什么人(系统)有这么一个约定:我的bean里没有保存状态,系统可以据此作任何优化(如:生存期控制,多线程等等。记住实际上ejb container是从你的bean继承了一个类来生成对象的,同时加入了一些系统调用的方法)。

也就是说,系统看到这是一个stateless的bean,所以会按管理此类的bean的方法管理你这个对象,他也许会根据这个对象的使用频率决定生成多少个这样的对象,当一个对象使用完后并没有删除而是分配给别的用户使用,所以如果你在对象中存放了状态,系统不知道(因为你告诉他这是个stateless的)。但是如果你想利用这个特性,那你就错了,应为系统分配给你的对象,也许是另外一个,而不是你想要的。

好了,我想我说的挺清楚的:)   再看看书吧

|
你说的这种情况是这样产生的:
当你第一次调用你的Stateless Session Bean,AppServer产生了这个Bean并在你调用后放入缓冲池了,这个Bean的Context中保持了有关这个Bean的环境变量信息(而不是Bean内部的数据);当你第二次调用的时候,AppServer从缓冲池中再把这个Bean激活(因为我想这时除了你,不会有别人在调用它了吧),所以你会发现它保存了上次的状态。你可以试试第三次调用的时候是否为1500。所以如果你应该在每次调用的时候清空你所要设置的状态。

|
当然嘛,因为是Statless的,APPServer认为完全没有必要真正去把它给Remove掉,只会将这个Bean放入Cache中等待下一个请求的到来

|
里面什么代码都没有为什么会奇怪?因为这个ejb对象不是由你创建的,而是由ejb container创建的。ejb container针对你的这个bean生成了外围代码,一些具体的工作由ejb container完成了。
再想一下CMP 的entity bean,你的find方法什么也不需要写,可你照样可以找到你所要的entity bean,why?因为所有的工作由ejb container完成了。

    
 
 

您可能感兴趣的文章:

  • oracle环境变量保存问题求教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    c/c++ iis7站长之家