EJB3 IIOP serialization issue: String index out of range in JBoss EAP 4.3

Solution Verified - Updated -

Issue

  • We are experiencing issues with objects sent through IIOP. Sometimes when methods are called it works fine. Other times it fails with a StringIndexOutOfBoundsException. The operations basically look up a complex entity by key. It either always works for a given key or always fails. All the keys work as expected when exercising the implementation only via JUnit. Also, this works as expected if the EJB is configured to use jnp instead of Corba.

    15:54:22,586 ERROR [STDERR] java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -4
    15:54:22,586 ERROR [STDERR]   at [package]
    15:54:22,586 ERROR [STDERR]   at org.apache.jsp.admin.ba_005ftest_jsp._jspService(ba_005ftest_jsp.java:109)
    15:54:22,586 ERROR [STDERR]   at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    15:54:22,586 ERROR [STDERR]   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    15:54:22,586 ERROR [STDERR]   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:387)
    15:54:22,586 ERROR [STDERR]   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    15:54:22,586 ERROR [STDERR]   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    15:54:22,586 ERROR [STDERR]   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    15:54:22,586 ERROR [STDERR]   at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
    15:54:22,586 ERROR [STDERR]   at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
    15:54:22,586 ERROR [STDERR]   at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    15:54:22,586 ERROR [STDERR]   at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    15:54:22,586 ERROR [STDERR]   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
    15:54:22,586 ERROR [STDERR]   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    15:54:22,586 ERROR [STDERR]   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    15:54:22,586 ERROR [STDERR]   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    15:54:22,586 ERROR [STDERR]   at java.lang.Thread.run(Thread.java:595)
    15:54:22,586 ERROR [STDERR] Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -4
    15:54:22,586 ERROR [STDERR]   at java.lang.String.checkBounds(String.java:368)
    15:54:22,586 ERROR [STDERR]   at java.lang.String.<init>(String.java:404)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_string(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_codebase(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1995)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2220)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1227)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.util.ValueHandler.readValue(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_untyped_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_typed_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_abstract_interface(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:363)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:526)
    15:54:22,586 ERROR [STDERR]   at java.io.ObjectInputStream.readObject(ObjectInputStream.java:342)
    15:54:22,586 ERROR [STDERR]   at java.util.ArrayList.readObject(ArrayList.java:591)
    15:54:22,586 ERROR [STDERR]   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    15:54:22,586 ERROR [STDERR]   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    15:54:22,586 ERROR [STDERR]   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    15:54:22,586 ERROR [STDERR]   at java.lang.reflect.Method.invoke(Method.java:592)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1700)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1218)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.util.ValueHandler.readValue(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_untyped_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_typed_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1995)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2220)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1227)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
    15:54:22,586 ERROR [STDERR]   at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.util.ValueHandler.readValue(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_untyped_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_typed_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jacorb.orb.CDRInputStream.read_value(Unknown Source)
    15:54:22,586 ERROR [STDERR]   at org.jboss.iiop.rmi.marshal.CDRStream$ValuetypeReader.read(CDRStream.java:760)
    15:54:22,586 ERROR [STDERR]   at org.jboss.iiop.rmi.marshal.strategy.StubStrategy.readRetval(StubStrategy.java:226)
    15:54:22,586 ERROR [STDERR]   at org.jboss.proxy.ejb.DynamicIIOPStub.invoke(DynamicIIOPStub.java:126)
    

Environment

  • JBoss Enterprise Application Platform (EAP) 4.3 CP_03
  • Java Virtual Machine (JVM): Sun JDK 1.5.0_22

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content