public void invoke(InputStream is,OutputStream os,SerializerFactory serializerFactory) throws Exception {
  boolean isDebug=false;
  if (isDebugInvoke()) {
    isDebug=true;
    PrintWriter dbg=createDebugPrintWriter();
    HessianDebugInputStream dIs=new HessianDebugInputStream(is,dbg);
    dIs.startTop2();
    is=dIs;
    HessianDebugOutputStream dOs=new HessianDebugOutputStream(os,dbg);
    dOs.startTop2();
    os=dOs;
  }
  HessianInputFactory.HeaderType header=_inputFactory.readHeader(is);
  AbstractHessianInput in;
  AbstractHessianOutput out;
switch (header) {
case CALL_1_REPLY_1:
    in=_hessianFactory.createHessianInput(is);
  out=_hessianFactory.createHessianOutput(os);
break;
case CALL_1_REPLY_2:
in=_hessianFactory.createHessianInput(is);
out=_hessianFactory.createHessian2Output(os);
break;
case HESSIAN_2:
in=_hessianFactory.createHessian2Input(is);
in.readCall();
out=_hessianFactory.createHessian2Output(os);
break;
default :
throw new IllegalStateException(header + " is an unknown Hessian call");
}
if (serializerFactory != null) {
in.setSerializerFactory(serializerFactory);
out.setSerializerFactory(serializerFactory);
}
try {
invoke(_service,in,out);
}
  finally {
in.close();
out.close();
if (isDebug) os.close();
}
}

public void invoke ( InputStream is , OutputStream os , SerializerFactory serializerFactory ) throws Exception { boolean isDebug = false ; if ( isDebugInvoke ( ) ) { isDebug = true ; PrintWriter dbg = createDebugPrintWriter ( ) ; HessianDebugInputStream dIs = new HessianDebugInputStream ( is , dbg ) ; dIs . startTop2 ( ) ; is = dIs ; HessianDebugOutputStream dOs = new HessianDebugOutputStream ( os , dbg ) ; dOs . startTop2 ( ) ; os = dOs ; } HessianInputFactory . HeaderType header = _inputFactory . readHeader ( is ) ; AbstractHessianInput in ; AbstractHessianOutput out ; switch ( header ) { case CALL_1_REPLY_1 : in = _hessianFactory . createHessianInput ( is ) ; out = _hessianFactory . createHessianOutput ( os ) ; break ; case CALL_1_REPLY_2 : in = _hessianFactory . createHessianInput ( is ) ; out = _hessianFactory . createHessian2Output ( os ) ; break ; case HESSIAN_2 : in = _hessianFactory . createHessian2Input ( is ) ; in . readCall ( ) ; out = _hessianFactory . createHessian2Output ( os ) ; break ; default : throw new IllegalStateException ( header + " is an unknown Hessian call" ) ; } if ( serializerFactory != null ) { in . setSerializerFactory ( serializerFactory ) ; out . setSerializerFactory ( serializerFactory ) ; } try { invoke ( _service , in , out ) ; } finally { in . close ( ) ; out . close ( ) ; if ( isDebug ) os . close ( ) ; } }
invoke the object with the request from the input stream .
