Serialization exception

Hi

I am getting the following error when running a Java service, this service creates an oracle descriptor and polls oracle types and ultimately returns an oracle struct type object. The connection is to Oracle Database XE 11.2 from webMethods IS 9.7 using JDBCAdapter 6.5.

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: oracle.jdbc.driver.T4CConnection
at com.wm.util.coder.IDataBinCoder.doJavaSerializationDecode(IDataBinCoder.java:1199)
at com.wm.util.coder.IDataBinCoder._decode(IDataBinCoder.java:1163)
at com.wm.util.coder.IDataBinCoder._decode(IDataBinCoder.java:798 )
at com.wm.util.coder.IDataBinCoder._decode(IDataBinCoder.java:798 )
at com.wm.util.coder.IDataBinCoder.decode(IDataBinCoder.java:294)
at com.wm.driver.comm.b2b.http.SessionHTTPLink.transportMsg(SessionHTTPLink.java:89)
at com.wm.driver.comm.b2b.http.HTTPLink$HTTPSendReceive.run(HTTPLink.java:362)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.NotSerializableException: oracle.jdbc.driver.T4CConnection
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508 )
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at com.wm.util.coder.IDataBinCoder.doJavaSerializationEncode(IDataBinCoder.java:632)
at com.wm.util.coder.IDataBinCoder._encode(IDataBinCoder.java:612)
at com.wm.util.coder.IDataBinCoder._encode(IDataBinCoder.java:461)
at com.wm.util.coder.IDataBinCoder._encode(IDataBinCoder.java:461)
at com.wm.util.coder.IDataBinCoder.encode(IDataBinCoder.java:268 )
at com.wm.app.b2b.server.ServerHTTPLink.send(ServerHTTPLink.java:69)
at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:143)
at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:164)
at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:174)
at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:384)
at com.wm.util.pool.PooledThread.run(PooledThread.java:127)
… 1 more

Anyone experienced similar issue…if so could please share the resolution… :smiley:

I am not sure if this helps but give it a try - change the return type from struct type object to byte array?.

Please try this and if it helps:

Resolution:

According to the JDBC Adapter documentation:
When using the java.sql.Array or java.sql.Struct as the output field type for a database column of type array or struct, JDBC Adapter returns the java.sql.Array and the java.sql.Struct objects, respectively, as returned by the driver. However, when serializing the data across the JVMs, this returned data may not be serializable and may result into a java.io.NotSerializableException. Therefore, before serializing the data across the JVMs, it is important that you use a Java or a flow service to process the java.sql.Struct and java.sql.Array objects as required, and then drop them from the pipeline.

Is it possible this is the cause of your issue? If so, then you may need to do as the documentation suggests, process the java.sql.Struct, and then drop the Struct.

HTH,
RMG