rmi2iiopコンパイラで-localnocopyフラグを指定することにより、パラメータのコピーを使用禁止にできます。-nolocalフラグを使用することにより、まとめてローカルスタブの生成をスキップできます。
// Tue Aug 26 11:57:20 EDT 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); | } } }
// Tue Aug 26 11:57:20 EDT 2003 package helloWorld2; public class _HelloImpl_Tie extends javax.rmi.CORBA.Stub implements javax.rmi.CORBA.Tie, helloWorld2.Hello { private org.omg.CORBA.portable.ObjectImpl _thisObject; public synchronized org.omg.CORBA.Object thisObject() { | if (_thisObject == null) { | | try { | | | // create the stub | | | _thisObject = (org.omg.CORBA.portable.ObjectImpl) | | | Class.forName("helloWorld2._Hello_Stub").newInstance(); | | | | | | // set the delegate in the stub | | | try { | | | | _thisObject._set_delegate(_get_delegate()); | | | } catch (org.omg.CORBA.BAD_OPERATION ex) {} | | | | | } catch (java.lang.Exception ex) { | | | throw new java.lang.RuntimeException("unable to create stub"); | | } | } | | return _thisObject; } public org.omg.CORBA.ORB orb() { | return _orb(); } public void orb(org.omg.CORBA.ORB orb) { | orb.connect(this); } private static final String[] __ids = { | "RMI:helloWorld2.Hello:0000000000000000" }; public String[] _ids() { return __ids; } public synchronized void deactivate() { | _orb().disconnect(this); | _thisObject = null; } private helloWorld2.HelloImpl _target; public void setTarget(java.rmi.Remote target) { | _target = (helloWorld2.HelloImpl) target; } public java.rmi.Remote getTarget() { | return _target; } 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 = _target.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; } public java.lang.String sayHello() throws java.rmi.RemoteException { | return _target.sayHello(); } }
Copyright © 2000-2003, Novell, Inc.All rights reserved.