You can disable copying of parameters by specifying -localnocopy flag on the rmi2iiop compiler. You can skip generation of local stubs all together by using the -nolocal flag.
The _servant_preinvoke and _servant_postinvoke give the ORB the opportunity to enfore the POA semantics of POA Manager, adapter activation, object activation etc.
// Wed Nov 19 16:39:05 EST 2003 package helloWorld2; public class _Hello_Stub extends javax.rmi.CORBA.Stub implements helloWorld2.Hello { private static final String[] __ids = { | "RMI:helloWorld2.Hello:0000000000000000" }; public String[] _ids() { return __ids; } public java.lang.String sayHello() throws java.rmi.RemoteException { | _local_stub: | | if (javax.rmi.CORBA.Util.isLocal(this)) { | | | | // get the Servant Object | | org.omg.CORBA.portable.ServantObject _servObj = | | _servant_preinvoke("sayHello", helloWorld2.Hello.class); | | if (_servObj == null) break _local_stub; | | | | try { | | | // invoke on the servant | | | return ((helloWorld2.Hello) _servObj.servant).sayHello(); | | | | | } catch (Throwable ex) { | | | // copy the exception | | | ex = (Throwable) javax.rmi.CORBA.Util.copyObject(ex, _orb()); | | | | | | throw javax.rmi.CORBA.Util.wrapException(ex); | | | | | } finally { | | | _servant_postinvoke(_servObj); | | } | } | | org.omg.CORBA_2_3.portable.InputStream in = null; | | try { | | try { | | | // create an output stream | | | org.omg.CORBA_2_3.portable.OutputStream out = | | | (org.omg.CORBA_2_3.portable.OutputStream) | | | _request("sayHello", true); | | | | | | // do the invocation | | | in = (org.omg.CORBA_2_3.portable.InputStream) _invoke(out); | | | return (java.lang.String) in.read_value(java.lang.String.class); | | | | | } catch (org.omg.CORBA.portable.ApplicationException ex) { | | | | | | // get the input stream | | | in = (org.omg.CORBA_2_3.portable.InputStream) | | | ex.getInputStream(); | | | | | | // read the exception id | | | String id = ex.getId(); | | | in.read_string(); | | | | | | // unexpected exception | | | throw new java.rmi.UnexpectedException(id); | | | | | } catch (org.omg.CORBA.portable.RemarshalException rex) { | | | return sayHello(); | | | | | } finally { | | | _releaseReply(in); | | } | | | } catch (org.omg.CORBA.SystemException ex) { | | throw javax.rmi.CORBA.Util.mapSystemException(ex); | } } }
// Wed Nov 19 16:39:05 EST 2003 package helloWorld2; public abstract class HelloPOA extends org.omg.PortableServer.Servant implements org.omg.CORBA.portable.InvokeHandler, helloWorld2.Hello { public org.omg.CORBA.ORB orb() { | return _orb(); } public void orb(org.omg.CORBA.ORB orb) { | ((com.sssw.jbroker.POA.ServantDelegate)_get_delegate()).orb(this, orb); } public org.omg.CORBA.portable.OutputStream _invoke(String method, org.omg.CORBA.portable.InputStream in1, org.omg.CORBA.portable.ResponseHandler rh) { | org.omg.CORBA_2_3.portable.InputStream in = | (org.omg.CORBA_2_3.portable.InputStream) in1; | org.omg.CORBA_2_3.portable.OutputStream out = null; | | try { | | if (method.equals("sayHello")) { | | | java.lang.String result = sayHello(); | | | out = (org.omg.CORBA_2_3.portable.OutputStream) | | | rh.createReply(); | | | out.write_value(result, java.lang.String.class); | | } | | | | else throw new org.omg.CORBA.BAD_OPERATION(method); | | | } catch (org.omg.CORBA.SystemException ex) { | | throw ex; | | | } catch (java.lang.Throwable ex) { | | throw new org.omg.CORBA.portable.UnknownException(ex); | } | | return out; } private static final String[] __ids = { | "RMI:helloWorld2.Hello:0000000000000000" }; public String[] _all_interfaces(org.omg.PortableServer.POA poa, byte[] oid) { | return __ids; } }
// Wed Nov 19 16:39:05 EST 2003 package helloWorld2; public class HelloPOATie extends helloWorld2.HelloPOA implements javax.rmi.CORBA.Tie, helloWorld2.Hello { public HelloPOATie() {} public HelloPOATie(java.rmi.Remote target) { | setTarget(target); } public org.omg.CORBA.Object thisObject() { | return _this_object(); } public synchronized void deactivate() {} private helloWorld2.Hello _target; public void setTarget(java.rmi.Remote target) { | _target = (helloWorld2.Hello) target; } public java.rmi.Remote getTarget() { | return _target; } public java.lang.String sayHello() throws java.rmi.RemoteException { | // delegate the invocation to target | return _target.sayHello(); | } }
Copyright © 2000-2003, Novell, Inc. All rights reserved. |