When I try to run two specific methods (this error only occurs in two of about ten methods the WS offers), i get the following error:
com.wm.app.b2b.service.ServiceException:
java.net.SocketTimeoutException: Read Timed Out
The problem is this error occurs almost instantly after I run the service (he doesn’t wait enought time for a time out), and also the WS method is executed on the other side (that is, the methods is completed in the server).
Also if I try to run the WS using soapUI or any other program for running WS, it work perfectly, and doesn’t return this error.
When you step through the flow generated by the web service connector wizard, at what point does the error occur? Assuming that it is on the call to pub.client:soapHTTP or pub.client:soapRPC, have you examined the soap message that is being sent to the provider of the service to determine whether it is properly formed?
Lots of threads here on the weaknesses of the web services connector wizard. It just creates a starter Flow service for you. Sometimes those Flow services even work. Often they need tweaking to work and always you need to add logic to parameterize the soap endpoint (extracted from the WSDL) and to add additional error handling and logging.
Actually it is on soapHTTP call that the error occurs.
I’ve check the SOAP message and the difference from using directly soapUI, is very little and ignorable (like namespaces)
Thanks anyway,
I’ll try working on the knowledge that the WS Connector doesn’t do a 100% job
So, you have a WSDL describing a Web Service containing 10 operations. Eight of Flows generated by the web service connector can successfully invoke operations, but two fail immediately with some timeout error.
Point it at the WSDL to generate a test case for each operation in the Web Service
Run the tests for the operations that fail when invoked from WSC-generated Flow services
If the test succeeds look at the soap request that successfully invoked the operation and compare that to the contents of the soapRequestData variable in your generated Flow service immedately prior to your call to pub.client:soapHTTP.
If the test fails, then work with the provider of the service to understand why. When you can successfully invoke each operation from a testing tool, then you will be able to do so from Developer / IS as long as you can produce the same SOAP request.
I tried doing what you suggested,
I saw the differences, but I can’t change the SOAP request on WM (when he call soapHTTP I get a not SOAP error)
Instead I tried using the SOAP message generated on WM in soapUI (a software very much like SOAP Sonar, but free) and the call worked perfectly.
So I assume the SOAP message used by WM is correct.
If your Flow creates a soapRequest that can be pasted into Sonar or soapUI or whatever to successfully invoke that operation, then it should, of course, also work if posted from Integration Server. (Same message sent to the same place should produce same outcome).
Confirm that the endpoint address (URL) in your flow is correct and that any required authentication is supplied.
Is this operation being invoked over HTTP or HTTPS?
I understand what you are saying, it should work, but it isn’t.
I’ve been doing more tests, and this is what I found
Altought I get the SocketTimeoutException the WS method runs (that is, the Data is created on the server)
I have another method, that is Listing the data created, and sometimes when I run this method I get the same exception, but if I run a second time (in a row) it work.
The problem is that the methods that never run I can’t call it with the same data (because the second time I run it, the data already exists in the server).
Is this a known issue on the WM Integration Server? Having to run a service twice to get the correct result?
Can I do a flush or whatever on the beggining of the service, so one time is enough?