Hello! Im trying to execute code from guide Oracle SOA Suite 11g – Getting the payload from the Composite instance - Part2
Im added some code to see string after transform:
import java.io.StringWriter;
import java.sql.*;
import java.util.Hashtable;
import javax.naming.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import oracle.xml.binxml.*;
import oracle.xml.parser.v2.*;
import oracle.xml.scalable.InfosetReader;
public class GetPayload {
public static Connection getConnection() throws Exception {
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://test.ru:8001");
ctx = new InitialContext(ht);
javax.sql.DataSource ds =(javax.sql.DataSource)ctx.lookup("jdbc/SOADataSource");
return ds.getConnection();
}
public static String getPayload() {
Statement stmt = null;
Connection connection = null;
ResultSet rs = null;
String query =
"select xmldoc.document DOC " + "from xml_document xmldoc,instance_payload inspay,composite_instance cmpins " +
"where xmldoc.document_id = inspay.payload_key " +
"and inspay.instance_id = cmpins.id " +
"and inspay.instance_type='composite' " +
"and xmldoc.DOCUMENT_TYPE = 2 " +
"and inspay.instance_id = 1933802";
String payload = "";
XMLDocument doc = null;
try {
connection = getConnection();
stmt = connection.createStatement();
rs = stmt.executeQuery(query);
XMLDOMImplementation xmldomimpl = new XMLDOMImplementation();
while (rs.next()) {
BinXMLProcessor xmlprocessor =BinXMLProcessorFactory.createProcessor();
BinXMLStream xmlstream =xmlprocessor.createBinXMLStream(rs.getBlob("DOC"));
BinXMLDecoder xmldecoder = xmlstream.getDecoder();
InfosetReader xmlreader = xmldecoder.getReader();
doc = (XMLDocument)xmldomimpl.createDocument(xmlreader);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer;
transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc),new StreamResult(writer));
payload =writer.getBuffer().toString().replaceAll("<", "<").replaceAll(">",">");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (connection != null)
connection.close();
} catch (Exception e) {
}
}
return payload;
}
public static void main(String[] args){
System.out.println(getPayload());
}
}
To project Im added some jar:
xmlparserv2.jar from middleware/oracle_common/modules/oracle.xdk_11.1.0
wlclient.jar from /oracle/middleware/wlserver_10.3/server/lib
When Im running project im getting error:
D:\Oracle\Java\jdk1.6.0_45\bin\javaw.exe -server -classpath C:\JDeveloper\mywork\ParseXMLbin\.adf;C:\JDeveloper\mywork\ParseXMLbin\GetPayload\classes;D:\libs\oracle.xdk_11.1.0\xmlparserv2.jar;D:\libs\wlclient.jar -Djavax.net.ssl.trustStore=D:\Oracle\Middleware1\wlserver_10.3\server\lib\DemoTrust.jks GetPayload
java.lang.ClassCastException: java.lang.Object incompatible with java.io.Serializable
at weblogic.iiop.IIOPOutputStream.writeAny(IIOPOutputStream.java:1588)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2231)
at weblogic.utils.io.ObjectStreamClass.writeFields(ObjectStreamClass.java:414)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:235)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:225)
at weblogic.corba.utils.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:182)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1963)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:2001)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2266)
at weblogic.jdbc.common.internal.RmiDataSource_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Weblogic log file /oracle/middleware/user_projects/domains/ECMdomain/servers/soa_server1/logs/soa_server1.log
####<Nov 17, 2015 9:44:04 AM EET> <Warning> <RMI> <webtst.russvet.ru> <soa_server1> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <ad53144a2e378d05:19b7a705:15101221102:-8000-00000000002ec16c> <1447746244170> <BEA-080003> <RuntimeException thrown by rmi server: weblogic.jdbc.common.internal.RmiDataSource.getConnection()
java.lang.ClassCastException: java.lang.Object incompatible with java.io.Serializable.
java.lang.ClassCastException: java.lang.Object incompatible with java.io.Serializable
at weblogic.iiop.IIOPOutputStream.writeAny(IIOPOutputStream.java:1588)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2231)
at weblogic.utils.io.ObjectStreamClass.writeFields(ObjectStreamClass.java:414)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:235)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:225)
at weblogic.corba.utils.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:182)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1963)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:2001)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2266)
at weblogic.jdbc.common.internal.RmiDataSource_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Could you help to find solution?