1 Reply Latest reply: Aug 7, 2014 2:27 PM by Luz Mestre-Oracle RSS

    Failed to replicate non-serializable object causing MarshalException ...weblogic.cluster.replication

    34bd6c0f-5c4c-4813-a4e7-68df417d288c

      I have an application that has been running for a few years now without any code changes.   The original programmers are gone and our operations is reporting sessions being prematurely ended and non-serialize errors.   We are on weblogic 10.3.2, jdk 1.6_29.   One of the source files returned with a supposed non-serializable object is copied in below.   Along with the error obviously.   I'm not sure why suddenly the app would be having these errors if the code has not changed and these processes have been used prior.   Not sure what tier except code the problem could be coming from.   If anyone can give a quick look and provide feedback I'd appreciate it.

       

      - Stephen

       

      <Aug 7, 2014 7:07:56 AM EDT> <Error> <Cluster> <vmcdaw70.naeng.gm.com> <abat001> <[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'> <LZKVJL> <> <> <1407409676628> <BEA-000126> <All session objects should be serializable to replicate. Check the objects in your session. Failed to replicate non-serializable object.

      java.rmi.MarshalException: failed to marshal update(Lweblogic.cluster.replication.ROID;ILjava.io.Serializable;Ljava.lang.Object;); nested exception is:

        java.io.NotSerializableException: com.gm.abat.domain.admin.status.business.Status

        at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:90)

        at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:221)

        at weblogic.cluster.replication.ReplicationManager_1032_WLStub.update(Unknown Source)

        at sun.reflect.GeneratedMethodAccessor137.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at weblogic.cluster.replication.SecureReplicationInvocationHandler$ReplicationServicesInvocationAction.run(SecureReplicationInvocationHandler.java:184)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

        at weblogic.cluster.replication.SecureReplicationInvocationHandler.invoke(SecureReplicationInvocationHandler.java:154)

        at $Proxy73.update(Unknown Source)

        at weblogic.cluster.replication.ReplicationManager.updateSecondary(ReplicationManager.java:533)

        at weblogic.servlet.internal.session.ReplicatedSessionData.syncSession(ReplicatedSessionData.java:594)

        at weblogic.servlet.internal.session.ReplicatedSessionContext.sync(ReplicatedSessionContext.java:85)

        at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2739)

        at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2714)

        at weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.java:1479)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

        at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1473)

        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1441)

        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

        at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

       

       

      Caused By: java.io.NotSerializableException: com.gm.abat.domain.admin.status.business.Status

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

        at java.util.ArrayList.writeObject(ArrayList.java:570)

        at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

        at weblogic.servlet.internal.session.ReplicatedSessionChange.writeExternal(ReplicatedSessionChange.java:124)

        at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1429)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1398)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

        at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:618)

        at weblogic.rjvm.MsgAbbrevOutputStream.writeObjectWL(MsgAbbrevOutputStream.java:609)

        at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:38)

        at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:86)

        at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:221)

        at weblogic.cluster.replication.ReplicationManager_1032_WLStub.update(Unknown Source)

        at sun.reflect.GeneratedMethodAccessor137.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at weblogic.cluster.replication.SecureReplicationInvocationHandler$ReplicationServicesInvocationAction.run(SecureReplicationInvocationHandler.java:184)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

        at weblogic.cluster.replication.SecureReplicationInvocationHandler.invoke(SecureReplicationInvocationHandler.java:154)

        at $Proxy73.update(Unknown Source)

        at weblogic.cluster.replication.ReplicationManager.updateSecondary(ReplicationManager.java:533)

        at weblogic.servlet.internal.session.ReplicatedSessionData.syncSession(ReplicatedSessionData.java:594)

        at weblogic.servlet.internal.session.ReplicatedSessionContext.sync(ReplicatedSessionContext.java:85)

        at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2739)

        at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2714)

        at weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.java:1479)

        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

        at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1473)

        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1441)

        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

        at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

       

       

      The Status source:

       

      * This business object stores information for a region-status information, which

      * determines whether the Status should be set to Installed for a particular

      * region in the BOM Maintenance screen.

      *

      */

      public class Status {

       

       

        /**

        * The hybrid id

        */

        private String hybridId;

        /**

        * the hybrid name

        */

        private String hybridName;

        /**

        * the hybrid description

        */

        private String hybridDesc;

       

        /**

        * the regionId

        */

        private String regionId;

       

       

        /**

        * the region name

        */

        private String regionName;

       

       

        /**

        * string specifying whether a region has been checked or not.

        */

        private String regionChecked;

       

       

        /**

        * This attribute holds the value of language

        */

        private String language;

       

        /**

        * Comment for <code>lanuageName</code>

        */

        private String languageName;

        /**

        * the statusName string

        */

        private String statusName;

        /**

        * the statusDesc string

        */

        private String statusDesc;

       

        /**

        * Comment for <code>statusId</code>

        */

        private String statusId;

       

        /**

           * A private variable statusNameLabel of type String

           */

        private String statusNameLabel;

       

        /**

           * A private variable statusDescLabel of type String

           */

        private String statusDescLabel;

       

        /**

           * A private variable statusDescriptionName of type String

           */

        private String statusDescriptionName;

       

        /**

           * A public method getStatusDescLabel. This method is used to get status desc label.

           * @return String - The return type is String

           */

        public String getStatusDescLabel() {

        return statusDescLabel;

        }

       

       

        /**

           * A public method setStatusDescLabel. This method is used to set status desc label.

           * @param statusDescLabel - A String parameter

           * @return void - The return type is void

           */

        public void setStatusDescLabel(String statusDescLabel) {

        this.statusDescLabel = statusDescLabel;

        }

       

       

        /**

           * A public method getStatusNameLabel. This method is used to get status name label.

           * @return String - The return type is String

           */

        public String getStatusNameLabel() {

        return statusNameLabel;

        }

       

       

        /**

           * A public method setStatusNameLabel. This method is used to set status name label.

           * @param statusNameLabel - A String parameter

           * @return void - The return type is void

           */

        public void setStatusNameLabel(String statusNameLabel) {

        this.statusNameLabel = statusNameLabel;

        }

       

       

        /**

        * Status

        */

        public Status() {

        super();

        }

       

       

        /**

        * gets the current region id

        *

        * @return String - The return type is String

        */

        public String getRegionId() {

        return regionId;

        }

       

       

        /**

        * sets the current region id

        *

        * @param regionId current region id

        * @return void - The return type is void

        */

        public void setRegionId(String regionId) {

        this.regionId = regionId;

        }

       

       

        /**

        * gets the current region name

        *

        * @return String - The return type is String

        */

        public String getRegionName() {

        return regionName;

        }

       

       

        /**

        * sets the current region name

        *

        * @param regionName current region name

        * @return void - The return type is void

        */

        public void setRegionName(String regionName) {

        this.regionName = regionName;

        }

       

       

        /**

        * gets the current region check information

        *

        * @return String - The return type is String

        */

        public String getRegionChecked() {

        return regionChecked;

        }

       

       

        /**

        * sets the current region check information

        *

        * @param regionChecked current region check information

        * @return void - The return type is void

        */

        public void setRegionChecked(String regionChecked) {

        this.regionChecked = regionChecked;

        }

       

       

        /**

        * This method gets the value for the attibute language

        *

        * @return String - The return type is String

        */

        public String getLanguage() {

        return language;

        }

       

       

        /**

        * This method sets the value for the attibute language

        *

        * @param language String

        * @return void - The return type is void

        */

        public void setLanguage(String language) {

        this.language = language;

        }

        /**

        * A public method getStatusDesc. This method is used to get status desc.

        * @return String - The return type is String

        */

        public String getStatusDesc() {

        return statusDesc;

        }

        /**

        * A public method setStatusDesc. This method is used to set status desc.

        * @param statusDesc The statusDesc to set.

        * @return void - The return type is void

        */

        public void setStatusDesc(String statusDesc) {

        this.statusDesc = statusDesc;

        }

        /**

        * A public method getStatusId. This method is used to get status id.

        * @return String - The return type is String

        */

        public String getStatusId() {

        return statusId;

        }

        /**

        * A public method setStatusId. This method is used to set status id.

        * @param statusId The statusId to set.

        * @return void - The return type is void

        */

        public void setStatusId(String statusId) {

        this.statusId = statusId;

        }

        /**

        * A public method getStatusName. This method is used to get status name.

        * @return String - The return type is String

        */

        public String getStatusName() {

        return statusName;

        }

        /**

        * A public method setStatusName. This method is used to set status name.

        * @param statusName The statusName to set.

        * @return void - The return type is void

        */

        public void setStatusName(String statusName) {

        this.statusName = statusName;

        }

       

       

        /**

           * A public method getLanguageName. This method is used to get language name.

           * @return String - The return type is String

           */

        public String getLanguageName() {

        return languageName;

        }

       

       

        /**

           * A public method setLanguageName. This method is used to set language name.

           * @param languageName - A String parameter

           * @return void - The return type is void

           */

        public void setLanguageName(String languageName) {

        this.languageName = languageName;

        }

       

       

        /**

           * A public method getStatusDescriptionName. This method is used to get status description name.

           * @return String - The return type is String

           */

        public String getStatusDescriptionName() {

        return statusDescriptionName;

        }

       

       

        /**

           * A public method setStatusDescriptionName. This method is used to set status description name.

           * @param statusDescriptionName - A String parameter

           * @return void - The return type is void

           */

        public void setStatusDescriptionName(String statusDescriptionName) {

        this.statusDescriptionName = statusDescriptionName;

        }

       

       

        /**

        * A public method getHybridDesc. This method is used to get hybrid desc.

        * @return String - The return type is String

        */

        public String getHybridDesc() {

        return hybridDesc;

        }

       

       

        /**

        * A public method setHybridDesc. This method is used to set hybrid desc.

        * @param hybridDesc The hybridDesc to set.

        * @return void - The return type is void

        */

        public void setHybridDesc(String hybridDesc) {

        this.hybridDesc = hybridDesc;

        }

       

       

        /**

        * A public method getHybridId. This method is used to get hybrid id.

        * @return String - The return type is String

        */

        public String getHybridId() {

        return hybridId;

        }

       

       

        /**

        * A public method setHybridId. This method is used to set hybrid id.

        * @param hybridId The hybridId to set.

        * @return void - The return type is void

        */

        public void setHybridId(String hybridId) {

        this.hybridId = hybridId;

        }

       

       

        /**

        * A public method getHybridName. This method is used to get hybrid name.

        * @return String - The return type is String

        */

        public String getHybridName() {

        return hybridName;

        }

       

       

        /**

        * A public method setHybridName. This method is used to set hybrid name.

        * @param hybridName The hybridName to set.

        * @return void - The return type is void

        */

        public void setHybridName(String hybridName) {

        this.hybridName = hybridName;

        }

      }