0 Replies Latest reply on Mar 26, 2009 8:00 AM by nezihbf

    Calling EJB using Corba invoker (bad boolean deserealisation

    nezihbf

      Hi,
      My problem occurs when calling ejb method using Corba invoker.
      A client invokes an ejb method passing parameters with boolean attributes. boolean attributes values serialised by the client are badly deserealised causing wrong values

      Not all boolean values are corrupted, just the last parameter of the method is concerned.
      Not all boolean attributes of this last parameter are corrupted, just the two last booleans attributes of this last parameter of the method are concerned.

      Environment Description:
      My ejb is deployed on jboss 4.2.2 turning with JVM 1.5 AIX using IIOP 1.0

      My Client is a web application deployed on Tomcat 5.0.28 with a JVM 1.4
      This client interact with another techno server (That's why CORBA)

      Tests done without success:
      I've experemented different configurations in jacorb.properties without succes:

      ...
      jacorb.interop.lax_boolean_encoding=off/on
      ...
      jacorb.interop.chunk_custom_rmi_valuetypes=off/on
      ...
      jacorb.interop.sun=off/on
      ...
      jacorb.giop_minor_version=0
      ...


      Details and Analysis:
      I have located lines in my code that are concerned by the problem.

      This class let the client serialise parameters into a stream and let the the server build received parameters from received stream.

      The same class is deployed on both sides (client side and server side): write() method is used by the method caller in the client side and read() method is used by the server.

      package com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices;
      
      /**
      * com/slb/sema/helios/domaines/WFW/WEXE_ITF_InterfaceServices/WEXE_Element_CFHelper.java .
      * Generated by the IDL-to-Java compiler (portable), version "3.2"
      * from WEXE_ITF_InterfaceServices.idl
      * lundi 28 janvier 2008 18 h 35 CET
      */
      
      abstract public class WEXE_Element_CFHelper
      {
       private static String _id = "IDL:WEXE_ITF_InterfaceServices/WEXE_Element_CF:1.0";
      
       public static void insert (org.omg.CORBA.Any a, com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF that)
       {
       org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
       a.type (type ());
       write (out, that);
       a.read_value (out.create_input_stream (), type ());
       }
      
       public static com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF extract (org.omg.CORBA.Any a)
       {
       return read (a.create_input_stream ());
       }
      
       private static org.omg.CORBA.TypeCode __typeCode = null;
       private static boolean __active = false;
       synchronized public static org.omg.CORBA.TypeCode type ()
       {
       if (__typeCode == null)
       {
       synchronized (org.omg.CORBA.TypeCode.class)
       {
       if (__typeCode == null)
       {
       if (__active)
       {
       return org.omg.CORBA.ORB.init().create_recursive_tc ( _id );
       }
       __active = true;
       org.omg.CORBA.StructMember[] _members0 = new org.omg.CORBA.StructMember [27];
       org.omg.CORBA.TypeCode _tcOf_members0 = null;
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_RootIdentifierHelper.type ();
       _members0[0] = new org.omg.CORBA.StructMember (
       "RootID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_ActionCodeHelper.type ();
       _members0[1] = new org.omg.CORBA.StructMember (
       "StructureStatus",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
       _members0[2] = new org.omg.CORBA.StructMember (
       "IdentifiantMetier",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[3] = new org.omg.CORBA.StructMember (
       "ElementMetierOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[4] = new org.omg.CORBA.StructMember (
       "TypeElementOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[5] = new org.omg.CORBA.StructMember (
       "EtatOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[6] = new org.omg.CORBA.StructMember (
       "ElementContenantOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[7] = new org.omg.CORBA.StructMember (
       "EstSensible",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
       _members0[8] = new org.omg.CORBA.StructMember (
       "Priorite",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
       _members0[9] = new org.omg.CORBA.StructMember (
       "CritereDedie",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
       _members0[10] = new org.omg.CORBA.StructMember (
       "Observations",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.type ();
       _members0[11] = new org.omg.CORBA.StructMember (
       "DateObservation",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[12] = new org.omg.CORBA.StructMember (
       "GroupeTravailOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[13] = new org.omg.CORBA.StructMember (
       "PosteComptableOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[14] = new org.omg.CORBA.StructMember (
       "ExerciceOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.type ();
       _members0[15] = new org.omg.CORBA.StructMember (
       "BudgetCollectiviteOID",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_AmountNullableHelper.type ();
       _members0[16] = new org.omg.CORBA.StructMember (
       "Montant",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.type ();
       _members0[17] = new org.omg.CORBA.StructMember (
       "DateDebutTraitement",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.type ();
       _members0[18] = new org.omg.CORBA.StructMember (
       "DateEcheanceTraitement",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.type ();
       _members0[19] = new org.omg.CORBA.StructMember (
       "DateDebutEtape",
       _tcOf_members0,
       null);
       _tcOf_members0 = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.type ();
       _members0[20] = new org.omg.CORBA.StructMember (
       "DateEcheanceEtape",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[21] = new org.omg.CORBA.StructMember (
       "EstConteneur",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
       _members0[22] = new org.omg.CORBA.StructMember (
       "ValeurEcheance",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[23] = new org.omg.CORBA.StructMember (
       "EstProprietaire",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[24] = new org.omg.CORBA.StructMember (
       "EstPartiellementVerrouille",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[25] = new org.omg.CORBA.StructMember (
       "EstTotalementVerrouille",
       _tcOf_members0,
       null);
       _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
       _members0[26] = new org.omg.CORBA.StructMember (
       "EstObligatoire",
       _tcOf_members0,
       null);
       __typeCode = org.omg.CORBA.ORB.init ().create_struct_tc (com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CFHelper.id (), "WEXE_Element_CF", _members0);
       __active = false;
       }
       }
       }
       return __typeCode;
       }
      
       public static String id ()
       {
       return _id;
       }
      
       public static com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF read (org.omg.CORBA.portable.InputStream istream)
       {
       com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF value = new com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF ();
       value.RootID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_RootIdentifierHelper.read (istream);
       value.StructureStatus = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_ActionCodeHelper.read (istream);
       value.IdentifiantMetier = istream.read_string ();
       value.ElementMetierOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.TypeElementOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.EtatOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.ElementContenantOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.EstSensible = istream.read_boolean ();
       value.Priorite = istream.read_long ();
       value.CritereDedie = istream.read_string ();
       value.Observations = istream.read_string ();
       value.DateObservation = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.read (istream);
       value.GroupeTravailOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.PosteComptableOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.ExerciceOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.BudgetCollectiviteOID = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.read (istream);
       value.Montant = com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_AmountNullableHelper.read (istream);
       value.DateDebutTraitement = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.read (istream);
       value.DateEcheanceTraitement = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.read (istream);
       value.DateDebutEtape = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.read (istream);
       value.DateEcheanceEtape = com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.read (istream);
       value.EstConteneur = istream.read_boolean ();
       value.ValeurEcheance = istream.read_long ();
       value.EstProprietaire = istream.read_boolean ();
       value.EstPartiellementVerrouille = istream.read_boolean ();
       value.EstTotalementVerrouille = istream.read_boolean ();
       value.EstObligatoire = istream.read_boolean ();
       return value;
       }
      
       public static void write (org.omg.CORBA.portable.OutputStream ostream, com.slb.sema.helios.domaines.WFW.WEXE_ITF_InterfaceServices.WEXE_Element_CF value)
       {
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_RootIdentifierHelper.write (ostream, value.RootID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_ActionCodeHelper.write (ostream, value.StructureStatus);
       ostream.write_string (value.IdentifiantMetier);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.ElementMetierOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.TypeElementOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.EtatOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.ElementContenantOID);
       ostream.write_boolean (value.EstSensible);
       ostream.write_long (value.Priorite);
       ostream.write_string (value.CritereDedie);
       ostream.write_string (value.Observations);
       com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.write (ostream, value.DateObservation);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.GroupeTravailOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.PosteComptableOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.ExerciceOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_IdentifierHelper.write (ostream, value.BudgetCollectiviteOID);
       com.slb.sema.helios.fwk.VSDK_ORB_Type.VSDK_AmountNullableHelper.write (ostream, value.Montant);
       com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.write (ostream, value.DateDebutTraitement);
       com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.write (ostream, value.DateEcheanceTraitement);
       com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.write (ostream, value.DateDebutEtape);
       com.slb.sema.helios.fwk.VSDK_TYP_Type.VSDK_DateTimeNullableHelper.write (ostream, value.DateEcheanceEtape);
       ostream.write_boolean (value.EstConteneur);
       ostream.write_long (value.ValeurEcheance);
       ostream.write_boolean (value.EstProprietaire);
       ostream.write_boolean (value.EstPartiellementVerrouille);
       ostream.write_boolean (value.EstTotalementVerrouille);
       ostream.write_boolean (value.EstObligatoire);
       }
      
      }
      


      I placed a breakPoint in the read() method at the line:
      => value.EstProprietaire = istream.read_boolean ();
       value.EstPartiellementVerrouille = istream.read_boolean ();
       value.EstTotalementVerrouille = istream.read_boolean ();
       value.EstObligatoire = istream.read_boolean ();
       return value;
       }
      

      The arrow indicate the statement that will be executed.
      the received stream is:
      [71, 73, 79, 80, 1, 0, 0, 0, 0, 0, 7, -116, 0, 0, 0, 1, 73, 66, 77, 18, 0, 0, 0, 8, 0, 0, 0, 1, 20, 32, 0, 1, 0, 0, 0, 14, 1, 0, 0, 0, 0, 0, 0, 41, 56, 48, 55, 55, 51, 57, 52, 51, 52, 47, 69, 74, 66, 79, 98, 106, 101, 99, 116, 38, 37, 99, 115, 109, 38, 37, 101, 106, 98, 38, 37, 87, 69, 88, 69, 47, -84, -19, 0, 5, 112, 0, 0, 0, 0, 0, 0, 25, 109, 97, 105, 110, 116, 101, 110, 105, 114, 69, 108, 101, 109, 101, 110, 116, 87, 111, 114, 107, 102, 108, 111, 119, 0, 0, 0, 0, 0, 0, 0, 0, 127, -1, -1, 2, 0, 0, 0, 98, 82, 77, 73, 58, 91, 76, 99, 111, 109, 46, 115, 108, 98, 46, 115, 101, 109, 97, 46, 104, 101, 108, 105, 111, 115, 46, 102, 119, 107, 46, 86, 83, 68, 75, 95, 79, 82, 66, 95, 84, 121, 112, 101, 46, 86, 83, 68, 75, 95, 80, 114, 111, 112, 101, 114, 116, 121, 86, 97, 108, 117, 101, 59, 58, 67, 57, 57, 70, 55, 66, 68, 51, 57, 53, 65, 54, 55, 50, 69, 48, 58, 66, 50, 51, 68, 66, 52, 69, 54, 70, 67, 55, 66, 55, 50, 69, 51, 0, 0, 0, 0, 0, 0, 12, 127, -1, -1, 10, 0, 0, 0, 95, 82, 77, 73, 58, 99, 111, 109, 46, 115, 108, 98, 46, 115, 101, 109, 97, 46, 104, 101, 108, 105, 111, 115, 46, 102, 119, 107, 46, 86, 83, 68, 75, 95, 79, 82, 66, 95, 84, 121, 112, 101, 46, 86, 83, 68, 75, 95, 80, 114, 111, 112, 101, 114, 116, 121, 86, 97, 108, 117, 101, 58, 67, 57, 57, 70, 55, 66, 68, 51, 57, 53, 65, 54, 55, 50, 69, 48, 58, 66, 50, 51, 68, 66, 52, 69, 54, 70, 67, 55, 66, 55, 50, 69, 51, 0, 0, 0, 0, 0, 53, 0, 0, 0, 39, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 67, 65, 76, 76, 95, 83, 69, 81, 85, 69, 78, 67, 69, 95, 78, 85, 77, 66, 69, 82, 0, 0, 0, 0, 0, 5, 49, 50, 57, 54, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, 84, 0, 0, 0, 49, 0, 0, 0, 33, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 69, 88, 69, 82, 67, 73, 67, 69, 95, 65, 78, 78, 69, 69, 0, 0, 0, 0, 0, 0, 0, 5, 50, 48, 48, 55, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, 12, 0, 0, 0, 53, 0, 0, 0, 29, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 85, 83, 69, 82, 95, 76, 79, 71, 73, 78, 0, 0, 0, 0, 0, 0, 0, 13, 112, 101, 116, 101, 116, 101, 115, 116, 49, 45, 99, 112, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -2, -64, 0, 0, 0, -78, 0, 0, 0, 28, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 84, 72, 82, 69, 65, 68, 95, 73, 68, 0, 0, 0, 0, -114, 57, 68, 66, 70, 48, 49, 66, 66, 57, 53, 69, 70, 65, 67, 50, 55, 54, 67, 69, 48, 55, 48, 49, 66, 52, 56, 49, 65, 65, 70, 49, 49, 46, 104, 101, 108, 105, 111, 115, 50, 35, 47, 87, 70, 87, 95, 67, 69, 95, 65, 48, 51, 95, 77, 111, 100, 105, 102, 105, 99, 97, 116, 105, 111, 110, 69, 108, 101, 109, 101, 110, 116, 46, 100, 111, 35, 87, 70, 87, 47, 67, 79, 78, 84, 82, 79, 76, 69, 95, 69, 88, 69, 67, 85, 84, 73, 79, 78, 35, 87, 69, 88, 69, 95, 67, 111, 114, 98, 97, 83, 101, 114, 118, 105, 99, 101, 46, 77, 97, 105, 110, 116, 101, 110, 105, 114, 69, 108, 101, 109, 101, 110, 116, 87, 111, 114, 107, 102, 108, 111, 119, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -3, -8, 0, 0, 0, 62, 0, 0, 0, 40, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 74, 79, 85, 82, 78, 69, 69, 95, 67, 79, 77, 80, 84, 65, 66, 76, 69, 95, 79, 73, 68, 0, 0, 0, 0, 14, 49, 54, 51, 57, 52, 52, 52, 57, 50, 56, 49, 49, 49, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -3, -92, 0, 0, 0, 58, 0, 0, 0, 43, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 66, 85, 68, 71, 69, 84, 95, 67, 79, 76, 76, 69, 67, 84, 73, 86, 73, 84, 69, 95, 67, 79, 68, 69, 0, 0, 0, 0, 0, 6, 48, 48, 56, 48, 48, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -3, 84, 0, 0, 0, 55, 0, 0, 0, 39, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 80, 79, 83, 84, 69, 95, 67, 79, 77, 80, 84, 65, 66, 76, 69, 95, 67, 79, 68, 69, 0, 0, 0, 0, 0, 7, 48, 51, 49, 48, 52, 51, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -3, 8, 0, 0, 0, 53, 0, 0, 0, 31, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 69, 88, 69, 82, 67, 73, 67, 69, 95, 79, 73, 68, 0, 0, 0, 0, 0, 13, 53, 57, 56, 54, 49, 54, 55, 48, 52, 56, 57, 57, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -4, -68, 0, 0, 0, 49, 0, 0, 0, 27, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 85, 83, 69, 82, 95, 79, 73, 68, 0, 0, 0, 0, 0, 13, 53, 53, 53, 57, 48, 50, 56, 56, 51, 48, 57, 57, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -4, 116, 0, 0, 0, 74, 0, 0, 0, 42, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 66, 85, 68, 71, 69, 84, 95, 67, 79, 76, 76, 69, 67, 84, 73, 86, 73, 84, 69, 95, 79, 73, 68, 0, 0, 0, 0, 0, 0, 22, 52, 48, 48, 48, 55, 49, 55, 48, 48, 48, 48, 48, 50, 53, 56, 56, 51, 51, 48, 48, 48, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -4, 20, 0, 0, 0, 70, 0, 0, 0, 38, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 80, 79, 83, 84, 69, 95, 67, 79, 77, 80, 84, 65, 66, 76, 69, 95, 79, 73, 68, 0, 0, 0, 0, 0, 0, 22, 52, 48, 48, 48, 55, 49, 55, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 48, 48, 48, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, -1, -1, -1, -1, -1, -1, -5, -72, 0, 0, 0, 73, 0, 0, 0, 41, 86, 83, 68, 75, 95, 67, 84, 88, 95, 80, 82, 79, 80, 69, 82, 84, 89, 95, 74, 79, 85, 82, 78, 69, 69, 95, 67, 79, 77, 80, 84, 65, 66, 76, 69, 95, 68, 65, 84, 69, 0, 0, 0, 0, 0, 0, 0, 21, 50, 57, 45, 79, 99, 116, 45, 50, 48, 48, 55, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 0, 0, 0, -1, -1, -1, -1, 127, -1, -1, 10, 0, 0, 0, 114, 82, 77, 73, 58, 99, 111, 109, 46, 115, 108, 98, 46, 115, 101, 109, 97, 46, 104, 101, 108, 105, 111, 115, 46, 100, 111, 109, 97, 105, 110, 101, 115, 46, 87, 70, 87, 46, 87, 69, 88, 69, 95, 73, 84, 70, 95, 73, 110, 116, 101, 114, 102, 97, 99, 101, 83, 101, 114, 118, 105, 99, 101, 115, 46, 87, 69, 88, 69, 95, 69, 108, 101, 109, 101, 110, 116, 95, 67, 70, 58, 54, 49, 68, 48, 50, 53, 66, 50, 54, 68, 48, 57, 52, 70, 68, 68, 58, 65, 66, 66, 51, 52, 65, 50, 66, 56, 52, 69, 50, 53, 48, 53, 69, 0, 0, 0, 0, 0, 1, -124, 0, 0, 0, 13, 53, 48, 57, 52, 48, 48, 49, 49, 53, 54, 57, 57, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 3, 0, 0, 0, 9, 49, 48, 55, 53, 48, 48, 48, 57, 0, 0, 0, 0, 0, 0, 0, 13, 53, 48, 57, 52, 48, 48, 49, 49, 53, 53, 57, 57, 0, 0, 0, 0, 0, 0, 0, 14, 50, 48, 49, 50, 51, 48, 54, 50, 51, 49, 53, 48, 48, 0, 0, 0, 0, 0, 0, 14, 52, 48, 50, 50, 51, 48, 54, 50, 51, 49, 53, 48, 48, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 3, 0, 0, 0, 5, 78, 85, 76, 76, 0, 0, 0, 0, 0, 0, 0, 3, 97, 122, 0, 0, 0, 0, 0, 21, 50, 48, 45, 74, 117, 110, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 0, 0, 0, 0, 0, 0, 13, 54, 49, 57, 52, 49, 50, 54, 55, 50, 57, 57, 54, 0, 0, 0, 0, 0, 0, 0, 22, 52, 48, 48, 48, 55, 49, 55, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 48, 48, 48, 0, 0, 0, 0, 0, 0, 13, 53, 57, 56, 54, 49, 54, 55, 48, 52, 56, 57, 57, 0, 0, 0, 0, 0, 0, 0, 22, 52, 48, 48, 48, 55, 49, 55, 48, 48, 48, 48, 48, 50, 53, 56, 56, 51, 51, 48, 48, 48, 0, 0, 0, 0, 0, 0, 23, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 49, 53, 50, 48, 46, 48, 48, 48, 48, 0, 0, 0, 0, 0, 21, 49, 52, 45, 74, 97, 110, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 0, 0, 0, 0, 0, 0, 21, 50, 57, 45, 74, 97, 110, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 0, 0, 0, 0, 0, 0, 21, 49, 51, 45, 77, 97, 121, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, -1, 113, 0, 0, 1, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 21, 50, 57, 45, 74, 97, 110, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 0, 0, 0, 0, 0, 0, 21, 49, 52, 45, 74, 97, 110, 45, 50, 48, 48, 56, 32, 48, 48, 58, 48, 48, 58, 48, 48, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, -1, -1, -1, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
      


      At this breakpoint my Eclipse variable tab show following values of the RequestInputStream object:

      ...
      Pos = 1936
      Giop_minor = 0
      Chunk_end_pos = 1940
      Chunked_value = true
      ...
      


      This means that we are ready to read at the position 1936.
      When executed ...
       value.EstProprietaire = istream.read_boolean ();
      => value.EstPartiellementVerrouille = istream.read_boolean ();
       value.EstTotalementVerrouille = istream.read_boolean ();
       value.EstObligatoire = istream.read_boolean ();
       return value;
       }
      

      The arrow indicate the next statement to be executed.
      ... expected boolean value is read correctly from the position 1936 and the Pos value is changed to 1937:
      ...
      Pos = 1937
      ...
      


      when next instruction is executed, value.EstPartiellementVerrouille boolean value is read correctly from the position 1937, but Pos value is changed to 1945 instead of 1938
      Chunk_end_pos is changed to -1
       value.EstProprietaire = istream.read_boolean ();
       value.EstPartiellementVerrouille = istream.read_boolean ();
      => value.EstTotalementVerrouille = istream.read_boolean ();
       value.EstObligatoire = istream.read_boolean ();
       return value;
       }
      


      ...
      Pos=1945
      ...
      Chunk_end_pos=1
      ...
      


      This means that the next boolean value will be read at the position 1945 instead of 1938. false value will be read instead of true.
      following is an extract of the stream, from position 1935 to position 1950.
      Expected values are false, false, true, false, and read values are false, false, false, false.
      Thanks for your help.

      ...,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,...
      ...,113 ,0 ,0 ,1 ,0 ,-1 ,-1 ,-1 ,-1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,...