wwlhp@jdon
2004-09-29 09:18
无状态session bean实例的池调度我是清楚的。我不明白的是ejb object,也就是容器实现的远程接口的实现类,这个类的实例叫做ejb对象。

每次你在home stub上调用create()方法,容器就会创建一个ejb对象,然后从池中挑出一个bean实例与这个ejb对象关联,然后把ejb对象的stub返回给你,你用完了之后就在这个remote stub上调用remove()方法,容器就会销毁这个ejb对象。

我不清楚的是这个ejb对象,难道容器不能重用他们么?

SportsBaby1980
2004-09-29 14:21
我写了一点代码,主要是用来测试SLSB的是不是在remove后就销毁,

************start time**********************Wed Sep 29 14:14:48 CST 2004

**************end time********************Wed Sep 29 14:14:54 CST 2004

这是命令行的结果。

14:13:52,640 INFO [STDOUT] **************doAnything now************i==49

14:14:52,906 INFO [STDOUT] **************doAnything now************i==0

14:14:52,984 INFO [STDOUT] **************doAnything now************i==1

14:14:53,031 INFO [STDOUT] **************doAnything now************i==2

14:14:53,078 INFO [STDOUT] **************doAnything now************i==3

14:14:53,109 INFO [STDOUT] **************doAnything now************i==4

14:14:53,171 INFO [STDOUT] **************doAnything now************i==5

14:14:53,218 INFO [STDOUT] **************doAnything now************i==6

14:14:53,265 INFO [STDOUT] **************doAnything now************i==7

14:14:53,328 INFO [STDOUT] **************doAnything now************i==8

14:14:53,375 INFO [STDOUT] **************doAnything now************i==9

14:14:53,421 INFO [STDOUT] **************doAnything now************i==10

14:14:53,484 INFO [STDOUT] **************doAnything now************i==11

14:14:53,546 INFO [STDOUT] **************doAnything now************i==12

14:14:53,578 INFO [STDOUT] **************doAnything now************i==13

14:14:53,625 INFO [STDOUT] **************doAnything now************i==14

14:14:53,703 INFO [STDOUT] **************doAnything now************i==15

14:14:53,750 INFO [STDOUT] **************doAnything now************i==16

14:14:53,781 INFO [STDOUT] **************doAnything now************i==17

14:14:53,828 INFO [STDOUT] **************doAnything now************i==18

14:14:53,859 INFO [STDOUT] **************doAnything now************i==19

14:14:53,906 INFO [STDOUT] **************doAnything now************i==20

14:14:53,937 INFO [STDOUT] **************doAnything now************i==21

14:14:53,968 INFO [STDOUT] **************doAnything now************i==22

14:14:54,015 INFO [STDOUT] **************doAnything now************i==23

14:14:54,062 INFO [STDOUT] **************doAnything now************i==24

14:14:54,109 INFO [STDOUT] **************doAnything now************i==25

14:14:54,140 INFO [STDOUT] **************doAnything now************i==26

14:14:54,187 INFO [STDOUT] **************doAnything now************i==27

14:14:54,218 INFO [STDOUT] **************doAnything now************i==28

14:14:54,250 INFO [STDOUT] **************doAnything now************i==29

14:14:54,281 INFO [STDOUT] **************doAnything now************i==30

14:14:54,296 INFO [STDOUT] **************doAnything now************i==31

14:14:54,343 INFO [STDOUT] **************doAnything now************i==32

14:14:54,359 INFO [STDOUT] **************doAnything now************i==33

14:14:54,390 INFO [STDOUT] **************doAnything now************i==34

14:14:54,421 INFO [STDOUT] **************doAnything now************i==35

14:14:54,437 INFO [STDOUT] **************doAnything now************i==36

14:14:54,484 INFO [STDOUT] **************doAnything now************i==37

14:14:54,515 INFO [STDOUT] **************doAnything now************i==38

14:14:54,546 INFO [STDOUT] **************doAnything now************i==39

14:14:54,578 INFO [STDOUT] **************doAnything now************i==40

14:14:54,609 INFO [STDOUT] **************doAnything now************i==41

14:14:54,656 INFO [STDOUT] **************doAnything now************i==42

14:14:54,671 INFO [STDOUT] **************doAnything now************i==43

14:14:54,703 INFO [STDOUT] **************doAnything now************i==44

14:14:54,828 INFO [STDOUT] **************doAnything now************i==45

14:14:54,843 INFO [STDOUT] **************doAnything now************i==46

14:14:54,875 INFO [STDOUT] **************doAnything now************i==47

14:14:54,906 INFO [STDOUT] **************doAnything now************i==48

14:14:54,937 INFO [STDOUT] **************doAnything now************i==49

这个是JBOSS的输出。

下面帖出主要代码:

下面的是在mian方法中运行的

  public void testExampleSessionBean() throws RemoteException, CreateException,
      RemoveException, RemoteException {

System.out.print("************start time**********************");
System.out.println(new Date());
     for(int i=0;i<50;i++){
       ExampleSessionHome home = (ExampleSessionHome)getEJBHome("ExampleSessionBean");
       ExampleSession remote = home.create();
       remote.doAnything(i);
       remote.remove();
     }
System.out.print("**************end time********************");
System.out.println(new Date());
  }
<p>

下面是EJB的业务方法

  public void doAnything(int i){
System.out.println("**************doAnything now************i=="+i);
  }


  public void ejbRemove() {
System.out.println("**************removing************");
  }
<p>

该例子说明一个结果:

SLSB在调用remove后,不会在容器中销毁!

而是在客户端注销掉,释放掉资源,容器中的

SLSB instance还是存在的。

并且我运行了很多次,也没有看到有remove的输出。

你用完了之后就在这个remote stub上调用remove()方法,容器就会销毁这个ejb对象。

我不清楚的是这个ejb对象,难道容器不能重用他们么?

所以你上面的话,有问题。

wwlhp@jdon
2004-09-29 15:52
楼上应该先搞清出bean instance和ejb object之间的区别。我说的是ejb object,而你一直在说bean instance。

SportsBaby1980
2004-09-30 10:30
我又仔细的看了一下:

发现我是搞错了。

你是不想每一次都查找JNDI创建EJBHOME?

和EJB REMOTE ?

不知道我这样理解的对否?

猜你喜欢
2Go 上一页 1 2