KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfox > ejb > handler > B5_EJBOperationHandler


1 /* JFox, the OpenSource J2EE Application Server
2  *
3  * Distributable under GNU LGPL license by gun.org
4  * more details please visit http://www.huihoo.org/jfox
5  */

6
7 package org.jfox.ejb.handler;
8
9 import java.lang.reflect.Method JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import javax.ejb.Handle JavaDoc;
12
13 import org.jfox.ejb.Bucket;
14 import org.jfox.ejb.EJBHomeMethod;
15 import org.jfox.ejb.EJBObjectId;
16 import org.jfox.ejb.EJBObjectMethod;
17 import org.jfox.ejb.connector.EJBInvocation;
18
19 /**
20  * 执行在 EJBObject 和 EJBHome 中定义的方法
21  *
22  * @author <a HREF="mailto:young_yy@hotmail.com">Young Yang</a>
23  */

24
25 public class B5_EJBOperationHandler extends AbstractHandler {
26
27     public Object JavaDoc invokeHome(Bucket bucket, EJBInvocation invocation, Iterator JavaDoc iter) throws Exception JavaDoc {
28 // System.out.println(this.getClass().getName() + " " + invocation.getMethod().getName());
29
Method JavaDoc method = invocation.getMethod();
30         if(method.equals(EJBHomeMethod.GetEJBMetaData)) {
31             return bucket.getEJBMetaData();
32         }
33         else if(method.equals(EJBHomeMethod.GetHomeHandle)) {
34             // 这个方法因为已经在 JRMPContainerInvoker 客户端执行,所以从不会调用
35
return bucket.getHomeHandle();
36         }
37         else if(method.equals(EJBHomeMethod.RemoveByHandle)) {
38             bucket.remove((Handle JavaDoc) (invocation.getArgs()[0]));
39             return null;
40             // 对于 StatelessSessionBean,这个方法不执行任何操作
41
}
42         else if(method.equals(EJBHomeMethod.RemoveByPrimaryKey)) {
43             bucket.remove(invocation.getArgs()[0]);
44             return null;
45         }
46         return super.invokeHome(bucket, invocation, iter);
47     }
48
49     public Object JavaDoc invokeBean(Bucket bucket, EJBInvocation invocation, Iterator JavaDoc iter) throws Exception JavaDoc {
50         Method JavaDoc method = invocation.getMethod();
51         if(method.equals(EJBObjectMethod.GetEJBHome)) {
52             return bucket.getEJBHome();
53         }
54         else if(method.equals(EJBObjectMethod.GetHandle)) {
55             return bucket.getHandle(invocation.getBean());
56         }
57         else if(method.equals(EJBObjectMethod.GetPrimaryKey)) {
58             return bucket.getPrimaryKey(invocation.getBean());
59         }
60         else if(method.equals(EJBObjectMethod.IsIdentical)) {
61             // InvocationHandler 已经将 Args 转换成了要比较的 EJBObject 的 ObjectId
62
return new Boolean JavaDoc(bucket.isIdentical((EJBObjectId)invocation.getObjectId(), (EJBObjectId) invocation.getArgs()[0]));
63         }
64         return super.invokeBean(bucket, invocation, iter);
65     }
66
67     public static void main(String JavaDoc[] args) {
68
69     }
70 }
Popular Tags