01: /**
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */package org.apache.geronimo.corba;
17:
18: import java.io.IOException;
19: import java.io.ObjectInputStream;
20: import java.io.ObjectOutputStream;
21: import javax.ejb.EJBHome;
22: import javax.ejb.EJBObject;
23: import javax.ejb.spi.HandleDelegate;
24: import javax.rmi.PortableRemoteObject;
25:
26: /**
27: * See ejb spec 2.1, 19.5.5.1
28: *
29: * @version $Revision: 465108 $ $Date: 2006-10-17 17:23:40 -0700 (Tue, 17 Oct 2006) $
30: */
31: public class CORBAHandleDelegate implements HandleDelegate {
32:
33: /**
34: * Called by home handles to deserialize stubs in any app server, including ones by other vendors.
35: * The spec seems to imply that a simple cast of in.readObject() should work but in certain
36: * orbs this does not seem to work and in.readObject returns a generic remote stub that needs
37: * to be narrowed. Although we think this is likely an orb bug this code with narrow will
38: * work in both circumstances.
39: * @param in
40: * @return
41: * @throws ClassNotFoundException
42: * @throws IOException
43: */
44: public EJBHome readEJBHome(ObjectInputStream in)
45: throws ClassNotFoundException, IOException {
46: Object o = in.readObject();
47: EJBHome home = (EJBHome) PortableRemoteObject.narrow(o,
48: EJBHome.class);
49: return home;
50: }
51:
52: /**
53: * Called by handles to deserialize stubs in any app server. See comment to readEJBHome.
54: * @param in
55: * @return
56: * @throws ClassNotFoundException
57: * @throws IOException
58: */
59: public EJBObject readEJBObject(ObjectInputStream in)
60: throws ClassNotFoundException, IOException {
61: Object o = in.readObject();
62: EJBObject object = (EJBObject) PortableRemoteObject.narrow(o,
63: EJBObject.class);
64: return object;
65: }
66:
67: public void writeEJBHome(EJBHome ejbHome, ObjectOutputStream out)
68: throws IOException {
69: out.writeObject(ejbHome);
70: }
71:
72: public void writeEJBObject(EJBObject ejbObject,
73: ObjectOutputStream out) throws IOException {
74: out.writeObject(ejbObject);
75: }
76:
77: }
|