/** Destroy the remote IDL type object. */ public void destroy() { InputStream in = null; try { OutputStream out = _request("destroy", true); in = _invoke(out); } catch (ApplicationException ex) { in = ex.getInputStream(); throw new org.omg.CORBA.MARSHAL(ex.getId()); } catch (RemarshalException rex) { destroy(); } finally { _releaseReply(in); } }
/** * Get the definition kind of the remote IDL type object. The method is written following OMG * specification, treating the typecode as a read only attribute rather than a method. This means, * the operation name is "_get_def_kind". * * @return a definition kind, returned by remote IDL type object. */ public DefinitionKind def_kind() { InputStream in = null; try { OutputStream out = _request("_get_def_kind", true); in = _invoke(out); return DefinitionKindHelper.read(in); } catch (ApplicationException ex) { in = ex.getInputStream(); throw new org.omg.CORBA.MARSHAL(ex.getId()); } catch (RemarshalException rex) { return def_kind(); } finally { _releaseReply(in); } }
/** * Get the typecode of the remote IDL type object. The method is written following OMG * specification, treating the typecode as a read only attribute rather than a method. This means, * the operation name is "_get_type". * * @return a typecode, returned by the remote IDL type object. */ public TypeCode type() { InputStream in = null; try { OutputStream out = _request("_get_type", true); in = _invoke(out); return TypeCodeHelper.read(in); } catch (ApplicationException ex) { in = ex.getInputStream(); throw new org.omg.CORBA.MARSHAL(ex.getId()); } catch (RemarshalException rex) { return type(); } catch (UserException ex) { MARSHAL m = new MARSHAL(); m.minor = Minor.UserException; m.initCause(ex); throw m; } finally { _releaseReply(in); } }
/** * Sends a request message to the server, receives the reply from the server, and returns an * <code>Object</code> result to the caller. */ public Object invoke(String operationName, StubStrategy stubStrategy, Object[] params) throws Throwable { if (operationName.equals("_get_handle") && this instanceof javax.ejb.EJBObject) { if (handle == null) { handle = new HandleImplIIOP(this); } return handle; } else if (operationName.equals("_get_homeHandle") && this instanceof javax.ejb.EJBHome) { if (handle == null) { handle = new HomeHandleImplIIOP(this); } return handle; } else if (!_is_local()) { // remote call path // To check whether this is a local stub or not we must call // org.omg.CORBA.portable.ObjectImpl._is_local(), and _not_ // javax.rmi.CORBA.Util.isLocal(Stub s), which in Sun's JDK // always return false. InputStream in = null; try { try { OutputStream out = (OutputStream) _request(operationName, true); stubStrategy.writeParams(out, params); trace("sent request: " + operationName); in = (InputStream) _invoke(out); if (stubStrategy.isNonVoid()) { trace("received reply"); return stubStrategy.readRetval(in); // Object retval = stubStrategy.readRetval(in); // trace("retval: " + retval); // return retval; } else return null; } catch (ApplicationException ex) { trace("got application exception"); in = (InputStream) ex.getInputStream(); throw stubStrategy.readException(ex.getId(), in); } catch (RemarshalException ex) { trace("got remarshal exception"); return invoke(operationName, stubStrategy, params); } } catch (SystemException ex) { if (EjbLogger.EJB3_INVOCATION_LOGGER.isTraceEnabled()) { EjbLogger.EJB3_INVOCATION_LOGGER.trace("CORBA system exception in IIOP stub", ex); } throw Util.mapSystemException(ex); } finally { _releaseReply(in); } } else { // local call path org.omg.CORBA.portable.ServantObject so = _servant_preinvoke(operationName, Object.class); if (so == null) return invoke(operationName, stubStrategy, params); try { // params = Util.copyObjects(params, _orb()); Object retval = ((LocalIIOPInvoker) so.servant) .invoke( operationName, params, null, /* tx */ null, /* identity */ null /* credential */); return stubStrategy.convertLocalRetval(retval); // retval = stubStrategy.convertLocalRetval(retval); // return Util.copyObject(retval, _orb()); } catch (Throwable e) { // Throwable ex = (Throwable)Util.copyObject(e, _orb()); Throwable ex = e; if (stubStrategy.isDeclaredException(ex)) throw ex; else throw Util.wrapException(ex); } finally { _servant_postinvoke(so); } } }