Jump to content

[Fatal Error] :1:1: Content is not allowed in prolog invoking SOAP post


James Carmichael

Recommended Posts

I'm running BW 6.3. and trying to send a soap request to an external (outside of our firewall) service.

 

First, it has been established there are NO firewall issues. I am able to send identical requests in SOAPUI.

 

When I debug the process, the Invoke activity throws the error errors below:

 

[Fatal Error] :1:1: Content is not allowed in prolog. (this error is displayed 13 times).

 

12:36:31.772 ERROR [bwEngThread:In-Memory Process Worker-2] com.tibco.bw.core - TIBCO-BW-CORE-500050: The BW process [vindecodingservice.module.DecodeVin] instance faulted, JobId [bw0a100], ProcessInstanceId [bw0a100], ParentProcessInstanceId [-], Module [VINDecodingService.module:1.0.0.qualifier], Application [VINDecodingService:1.0]. TIBCO-BW-CORE-500052: Invoke activity [describeVehicle] fault. com.tibco.bw.core.runtime.api.exception.BWServiceRuntimeException: TIBCO-BW-BINDING-SOAP-555030: Unable to send a request to the service provider for Operation [{urn:description7a.services.chrome.com}describeVehicle], SoapReferenceBinding [sOAPReferenceBinding], Application [VINDecodingService:1.0] due to exception [com.tibco.bw.sharedresource.http.api.HTTPException]. Message Received: [org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms] com.tibco.bw.sharedresource.http.api.HTTPException: org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms java.net.SocketTimeoutException: connect timed out

All I have read regarding the first error is that it as JAVA error caused by certain XML attributes. This is the first activity in the process, the only XML data is the invoke input.

I set breakpoints before and after the invoke activity.

At the "before" break, I examined "Job Data". The invoke activity input contains correctly-formatted SOAP body. I can copy the SOAP body from BW into SOAPUI and post to the external service. No errors and proper response.

The errors are thrown before the "after" breakpoint is hit.

The external service reference was created using a WSDL. All of the SOAP operations, response, and request types display correctly in BWP.

The SOAP binding is using an HTTP connector. The connector is using the "Apache Commons(Supported by HTTP and SOAP) implementation library.

Both the connector and SOAPReferenceBinding are referencing the correct host/port/endpoint.

I have debugged with Fiddler Web Debugger running and there is no request being sent to the external service.

My OS is Windows 7 SP1.

Eclipse platform 4.4.1.

 

 

I have been beating my head against the wall on this for over a week and have made no progress, so any help would be much appreciated.

 

Thanks,

 

James.

Link to comment
Share on other sites

Nothing yet. I tried creating a dead-simple SOAP service in .Net. Different error, it can't read the WSDL file.

I've seen some posts (not here) but on Java forums about that error being caused by nulls or other non-printing characters in XML. I don't know how that's the case, my request payload includes 6 strings, 5 of which are module properties and the other a process input parameter. In the abscence of any other suggestions, I'm going to try the Translate function.

Link to comment
Share on other sites

  • 4 months later...
  • 11 months later...
  • 11 months later...

I had the same error. Now it works for me.

For SOAP over http:

1. in my process i Create Reference with existing interface and upload the wsdl file of my external SOAP service;

2. on General Tab of created Reference i choose Reference Type like Binding Reference and choose the PortType from my wsdl;

3. on Binding Tab i create SOAP binding and leave empty field "HTTP Client Name";

4. when testing process - it works successfully

For SOAP over https:

1, 2 the same steps like above

3. i create HTTP Client Resource, change field "Default Host" on my current server, where web service is hosted, then

in security section i set the "Confidentiality" checkbox

4. then i create SSL Client Configuration, where i leave all fields default and next create Key Store Provider.

5. In Key Store Provider Resource in Keystore section i set next values

Provider - SUN

URL - D:/tibco/bw6/tibcojre64/1.8.0/lib/security/cacerts

Password - changeit (this is default password for cacerts keystore)

Type - JKS

6. i export the public key from external web service ssl certificate for root CA (in my case it was corporative domain CA)

7. i import this certificate into cacerts keystore as trusted with command like this

keytool -import -trustcacerts -keystore D:tibcobw6tibcojre641.8.0libsecuritycacerts -storepass changeit -alias Root -file C:Users...Desktopmydomain.corp.cer

8. when testing process - it works successfully

PS: when i created HTTP Client Resource for ssl, i left empty field "HTTP Client Name" on Binding Tab. But when i chose created HTTP Client Resource in that field, i got this error.

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...