Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Unable to parse XML String in Java snippet

SteveF-FresnoAug 18 2010 — edited Feb 27 2020
Hi,

We have a business process that will process an XML document that we don't know the structure of at design time. So, we put the XML in a simple String variable. We do know the structure of the top section (header) of the XML and want to get the values of some elements in that section. Since I don't have a schema for the XML, I was trying to use a Java snippet that uses java.xml.parsers and org.w3c.dom to parse the string into DOM and then walk the DOM to the elements that I need to get their value, but BPEL is giving me a java.net.MalformedURLException runtime fault.

I can parse the same XML in standalone Java without error, so the XML seems fine. I'm not sure where the malformed URL is. Any help or suggestions about parsing XML that you don't have a schema for, is appreciated.

-Steve

BPEL version: 10.1.3.5

Here's my simple BPEL:

<assign name="Assign_1">
<copy>
<from variable="inputVariable" part="payload"
query="/client:SFProcessProcessRequest/client:SourceDoc"/>
<to variable="sSourceDoc"/>
</copy>
</assign>

<bpelx:exec import="org.w3c.dom.*"/>
<bpelx:exec import="javax.xml.parsers.*"/>
<bpelx:exec name="Java_Embedding_1" language="java" version="1.5">
<![CDATA[

String srcDoc = getVariableData("sSourceDoc").toString();

DocumentBuilderFactory fact = null;
DocumentBuilder builder = null;
Document doc = null;

fact = DocumentBuilderFactory.newInstance();
builder = fact.newDocumentBuilder();
try {
doc = builder.parse(sSrcDoc);
} catch (Exception e) {
addAuditTrailEntry("Builder Parsing Exception: " + e.getMessage());
throw e;
}


It fails at the point of builder.parse with exception message "no protocol:". The fault shown in BPEL Console is:

<Fault xmlns="http://schemas.oracle.com/bpel/extension" env="http://schemas.xmlsoap.org/soap/envelope/" >
<faultcode xmlns="" >:runtimeFault</faultcode>
<faultstring xmlns="" >business exception</faultstring>
<faultactor xmlns="" >cx-fault-actor</faultactor>
<detail xmlns="" >
<code>java.net.MalformedURLException</code>
<summary>no protocol: <TestFmsXml xmlns="http://com.testsoftware/fis/FaPO/2.0"> <XmlVersion>5</XmlVersion> <TestBuild>111.03</TestBuild> <SenderMemberId>6360</SenderMemberId> <ReceiverMemberId>6357</ReceiverMemberId> <Packages> <Package> <Name>Fms</Name> <Version>9</Version> </Package> <Package> <Name>ArPort</Name> <Version>39.1.4</Version> </Package> <Package> <Name>ArRpts</Name> <Version>16</Version> </Package> </Packages> </TestFmsXml></summary>
<detail>java.net.MalformedURLException: no protocol: <TestFmsXml xmlns="http://com.testsoftware/fis/FaPO/2.0"> <XmlVersion>5</XmlVersion> <TestBuild>111.03</TestBuild> <SenderMemberId>6360</SenderMemberId> <ReceiverMemberId>6357</ReceiverMemberId> <Packages> <Package> <Name>Fms</Name> <Version>9</Version> </Package> <Package> <Name>ArPort</Name> <Version>39.1.4</Version> </Package> <Package> <Name>ArRpts</Name> <Version>16</Version> </Package> </Packages> </TestFmsXml> at java.net.URL.<init>(URL.java:567) at java.net.URL.<init>(URL.java:464) at java.net.URL.<init>(URL.java:413) at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:233) at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:201) at oracle.xml.jaxp.JXDocumentBuilder.parse(JXDocumentBuilder.java:155) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:146) at bpel.sfprocess.ExecLetBxExe2.execute(ExecLetBxExe2.java:118) at com.collaxa.cube.engine.ext.wmp.BPELXExecWMP.__executeStatements(BPELXExecWMP.java:50) at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:200) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:4327) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1840) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:77) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:239) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:344) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:6439) at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1271) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.__createAndInvoke(CubeEngineBean.java:129) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:172) at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:197) at sun.reflect.GeneratedMethodAccessor199.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31) at com.evermind.server.ThreadState.runAs(ThreadState.java:705) at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.TxRequiresNewInterceptor.invoke(TxRequiresNewInterceptor.java:52) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55) at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87) at CubeEngineBean_LocalProxy_4bin6i8.syncCreateAndInvoke(Unknown Source) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:548) at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:464) at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:133) at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:89) at sun.reflect.GeneratedMethodAccessor201.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31) at com.evermind.server.ThreadState.runAs(ThreadState.java:705) at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52) at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119) at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55) at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87) at DeliveryBean_RemoteProxy_4bin6i8.request(Unknown Source) at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processNormalOperation(SOAPRequestProvider.java:451) at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processBPELMessage(SOAPRequestProvider.java:274) at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processMessage(SOAPRequestProvider.java:120) at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:958) at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:379) at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:481) at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114) at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96) at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:200) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at oracle.security.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:400) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:517) at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:414) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:644) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:391) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:908) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:458) at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313) at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595) </detail>
</detail>
</Fault>

Edited by: SteveF-Fresno on Aug 18, 2010 4:41 PM
This post has been answered by 560617 on Aug 18 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 16 2010
Added on Aug 18 2010
2 comments
2,702 views