WSO2 banking sample JMS issue - wso2

Im trying out the Banking sample provided by WSO2 and when i do all the steps i see this error:
[2012-06-27 21:32:21,404] INFO - LogMediator To: http://shivaji:8283/services/AccountServiceProxy,WSAction: urn:createAccount,SOAPAction: urn:createAccount,ReplyTo: http://www.w3.org/2005/08/addressing/anonymous,MessageID: urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846,Direction: request,debug = accountProxy,Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:To>http://shivaji:8283/services/AccountServiceProxy</wsa:To><wsa:MessageID>urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846</wsa:MessageID><wsa:Action>urn:createAccount</wsa:Action></soapenv:Header><soapenv:Body><createAccount xmlns="http://hcc.wso2">
<hcc:customerId xmlns:hcc="http://hcc.wso2">9_Duggi</hcc:customerId>
<hcc:isNewCustomer xmlns:hcc="http://hcc.wso2">0</hcc:isNewCustomer>
<hcc:accountType xmlns:hcc="http://hcc.wso2">CURRENT</hcc:accountType>
</createAccount></soapenv:Body></soapenv:Envelope>
[2012-06-27 21:32:21,428] INFO - TimeoutHandler This engine will expire all callbacks after : 86400 seconds, irrespective of the timeout action, after the specified or optional timeout
[2012-06-27 21:32:51,669] WARN - JMSSender Did not receive a JMS response within 30000 ms to destination : temp-queue://ID:shivaji-51236-1340812606914-5:1:1 with JMS correlation ID : ID:shivaji-51236-1340812606914-5:1:1:1:1
[2012-06-27 21:33:21,309] INFO - LogMediator To: http://shivaji:8283/services/AccountServiceProxy,WSAction: urn:createAccount,SOAPAction: urn:createAccount,ReplyTo: http://www.w3.org/2005/08/addressing/anonymous,MessageID: urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846,Direction: request,debug = accountProxy,Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:To>http://shivaji:8283/services/AccountServiceProxy</wsa:To><wsa:MessageID>urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846</wsa:MessageID><wsa:Action>urn:createAccount</wsa:Action></soapenv:Header><soapenv:Body><createAccount xmlns="http://hcc.wso2">
<hcc:customerId xmlns:hcc="http://hcc.wso2">9_Duggi</hcc:customerId>
<hcc:isNewCustomer xmlns:hcc="http://hcc.wso2">0</hcc:isNewCustomer>
<hcc:accountType xmlns:hcc="http://hcc.wso2">CURRENT</hcc:accountType>
</createAccount></soapenv:Body></soapenv:Envelope>
[2012-06-27 21:33:51,364] WARN - JMSSender Did not receive a JMS response within 30000 ms to destination : temp-queue://ID:shivaji-51236-1340812606914-7:1:1 with JMS correlation ID : ID:shivaji-51236-1340812606914-7:1:1:1:1
[2012-06-27 21:34:21,319] INFO - LogMediator To: http://shivaji:8283/services/AccountServiceProxy,WSAction: urn:createAccount,SOAPAction: urn:createAccount,ReplyTo: http://www.w3.org/2005/08/addressing/anonymous,MessageID: urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846,Direction: request,debug = accountProxy,Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:To>http://shivaji:8283/services/AccountServiceProxy</wsa:To><wsa:MessageID>urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846</wsa:MessageID><wsa:Action>urn:createAccount</wsa:Action></soapenv:Header><soapenv:Body><createAccount xmlns="http://hcc.wso2">
<hcc:customerId xmlns:hcc="http://hcc.wso2">9_Duggi</hcc:customerId>
<hcc:isNewCustomer xmlns:hcc="http://hcc.wso2">0</hcc:isNewCustomer>
<hcc:accountType xmlns:hcc="http://hcc.wso2">CURRENT</hcc:accountType>
</createAccount></soapenv:Body></soapenv:Envelope>
[2012-06-27 21:34:51,392] WARN - JMSSender Did not receive a JMS response within 30000 ms to destination : temp-queue://ID:shivaji-51236-1340812606914-9:1:1 with JMS correlation ID : ID:shivaji-51236-1340812606914-9:1:1:1:1
[2012-06-27 21:35:21,324] INFO - LogMediator To: http://shivaji:8283/services/AccountServiceProxy,WSAction: urn:createAccount,SOAPAction: urn:createAccount,ReplyTo: http://www.w3.org/2005/08/addressing/anonymous,MessageID: urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846,Direction: request,debug = accountProxy,Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:To>http://shivaji:8283/services/AccountServiceProxy</wsa:To><wsa:MessageID>urn:uuid:b909e8e6-70f3-426a-8ba8-637120762846</wsa:MessageID><wsa:Action>urn:createAccount</wsa:Action></soapenv:Header><soapenv:Body><createAccount xmlns="http://hcc.wso2">
<hcc:customerId xmlns:hcc="http://hcc.wso2">9_Duggi</hcc:customerId>
<hcc:isNewCustomer xmlns:hcc="http://hcc.wso2">0</hcc:isNewCustomer>
<hcc:accountType xmlns:hcc="http://hcc.wso2">CURRENT</hcc:accountType>
</createAccount></soapenv:Body></soapenv:Envelope>
[2012-06-27 21:35:51,405] WARN - JMSSender Did not receive a JMS response within 30000 ms to destination : temp-queue://ID:shivaji-51236-1340812606914-11:1:1 with JMS correlation ID : ID:shivaji-51236-1340812606914-11:1:1:1:1
[2012-06-27 21:36:58,781] INFO - LogMediator To: /services/AccountServiceProxy,MessageID: urn:uuid:22be82b6-b160-4221-a421-34366240b8ac,Direction: request,debug = accountProxy,Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body /></soapenv:Envelope>
[2012-06-27 21:37:28,825] WARN - JMSSender Did not receive a JMS response within 30000 ms to destination : temp-queue://ID:shivaji-51236-1340812606914-13:1:1 with JMS correlation ID : ID:shivaji-51236-1340812606914-13:1:1:1:1
Can any on please help

This seems to be an issue in endpoints or WSDL ports.
You need to do the following to get this sorted out.
After you deploy the MainFrameMojoService with JMS transport enabled in the App Server, get the JMS endpoint from the Management console and set that service URL to the MainFrameEP endpoint.
Recheck all the WSDL files of the samples and check the port sections of each and every WSDL and make sure to correct the Service URLs there.
If you want more information, please have a look at the Developer Studio Webinar.
You can find the webinar source code from here.
Hope this helps!
Thanks and Regards,
Harshana

Related

Uploading files using the Postman binary method to wso2 esb cannot receive files?

This error message comes while uploading files
INFO - LogMediator To: /services/file, MessageID: urn:uuid:3fcb9ae1-bd3e-45d9-8ece-ac5658a51acb, Direction: request, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Error while building message, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><xformValues/></soapenv:Body></soapenv:Envelope>

How can I correctly create a WSO2 ESB API that uses HTTPS instead HTTP as protocol?

I am not so into WSO2 ESB and I have the following doubt.
I have deployed on my Carbon server some APIs, that works fine.
These APIs are using HTTP as protocol. For some reason I have to change it into HTTPS.
My doubs is: have I only to change the protocol attribute (of the resource tag) value form http to https?
<?xml version="1.0" encoding="UTF-8"?>
<api context="/meteo_forecast_weekly_v2/location" name="meteo_forecast_weekly_v2" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="GET" protocol="http" uri-template="/{localizationId}">
...............................................................
...............................................................
...............................................................
Or have I also to configure a certificate in my Carbon server?
EDIT-1: I tryied to do as suggested by BHA but when I do the call in this way I obtain this unknown protocol error:
$ curl -k https://XXX.YYY.ZZZ.WWW:8280/meteo_forecast_weekly_v2/location/1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Into the WSO2 stacktrace I obtain this error log:
TID: [-1] [] [2017-11-14 14:46:00,107] ERROR {org.apache.synapse.transport.passthru.SourceHandler} - HttpException occurred {org.apache.synapse.transport.passthru.SourceHandler}
org.apache.http.ProtocolException: Invalid request line: ü8Ò�;Cá©h0ß©�ø_¹i°eõ»Ê.,q5© À0À,À(À$ÀÀ
at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:208)
at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:407)
at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:381)
at org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:265)
at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.consumeInput(LoggingNHttpServerConnection.java:114)
at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:82)
at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:39)
at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316)
at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277)
at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.http.ParseException: Invalid request line: ü8Ò�;Cá©h0ß©�ø_¹i°eõ»Ê.,q5© À0À,À(À$ÀÀ
at org.apache.http.message.BasicLineParser.parseRequestLine(BasicLineParser.java:287)
at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:119)
at org.apache.http.impl.nio.codecs.DefaultHttpRequestParser.createMessage(DefaultHttpRequestParser.java:51)
at org.apache.http.impl.nio.codecs.AbstractMessageParser.parseHeadLine(AbstractMessageParser.java:156)
at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:206)
... 14 more
TID: [-1] [] [2017-11-14 14:46:00,113] INFO {org.apache.synapse.transport.passthru.SourceHandler} - Writer null when calling informWriterError {org.apache.synapse.transport.passthru.SourceHandler}
Why? What is the problem?
Yes, you only have to change protocol value. By default ESB uses it's default keystore which is in <ESB_HOME>/repository/reources/security/wso2carbon.jks. When you're in production it's recommended to change the default keystore.

How to find and stop empty PING log

I see log message created every 0.05 seconds.
To: /, MessageID: urn:uuid:33b0aab6-49a7-4646-bb49-883f202ff09b,
Direction: request, Envelope:
<?xml version='1.0' encoding='utf-8'?> <soapenv:Envelope
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/>
</soapenv:Envelope>
when I click on more I dont see any more info
Type Date Log Message
2017-06-21 08:11:34,483 To: /, MessageID: urn:uuid:33b0aab6-49a7-4646-bb49-883f202ff09b, Direction: request,
Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> More
TID[-1234] [ESB] [2017-06-21 08:11:34,483] INFO {org.apache.synapse.mediators.builtin.LogMediator} - To: /, MessageID:
urn:uuid:33b0aab6-49a7-4646-bb49-883f202ff09b, Direction: request,
Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/> </soapenv:Envelope>
I think that this is a ping message from WSO2. Is there a way to stop this?
It is over sizing my message logs..HELP
It sounds like your ESB receive a blank http request on / every 0.05s
When it receive a request on a non existing proxy service, default sequence "main" is executed (and it's behavior is to call log level="full")
Find who send this request to your ESB (monitoring probe ?)
Change default "main" sequence (remove log mediator)
Change defaut log4j.properties so that RollingFileAppender is used
It is generated by a log mediator included in your service:
https://docs.wso2.com/display/EI610/Log+Mediator
You can choose log level = "custom" to customize your log. See example 2 on the above page.

WSO2 ESB 4.9.0 Sample 271 Failed to locate XSD resource

I am using WSO2 ESB 4.9.0 and trying to implement Sample 271: File Processing.
https://docs.wso2.com/display/ESB490/Sample+271%3A+File+Processing
I have followed every step as mentioned in the sample guide. When trying to execute, it gives error:
[2015-10-06 10:41:09,024] INFO - LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: urn:uuid:247f4674-cd22-461e-88c2-6f12693a7d67, Direction: request, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = XML error occurred while creating the Smooks configuration from the config key: smooks Caused by Failed to locate XSD resource '/META-INF/ns/synapse' on classpath. Namespace: 'http://ws.apache.org/ns/synapse'., Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><text xmlns="http://ws.apache.org/commons/ns/payload">
Don, Smith, 123456789
John, Smith, 987654321
</text></soapenv:Body></soapenv:Envelope>
[2015-10-06 10:41:09,025] DEBUG - LogMediator End : Log mediator
[2015-10-06 10:41:09,026] DEBUG - DropMediator Start : Drop mediator
[2015-10-06 10:41:09,026] DEBUG - DropMediator End : Drop mediator
[2015-10-06 10:41:09,027] DEBUG - SequenceMediator End : Sequence <fault>
[2015-10-06 10:41:12,308] ERROR - MailTransportSender Error creating mail message or sending it to the configured server
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at org.apache.axis2.transport.mail.MailTransportSender.sendMail(MailTransportSender.java:494)
at org.apache.axis2.transport.mail.MailTransportSender.sendMessage(MailTransportSender.java:175)
at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
at org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker.run(AxisEngine.java:626)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-10-06 10:41:12,312] ERROR - MailTransportSender Error generating mail message
org.apache.axis2.AxisFault: Error creating mail message or sending it to the configured server
at org.apache.axis2.transport.base.AbstractTransportSender.handleException(AbstractTransportSender.java:226)
at org.apache.axis2.transport.mail.MailTransportSender.sendMail(MailTransportSender.java:505)
at org.apache.axis2.transport.mail.MailTransportSender.sendMessage(MailTransportSender.java:175)
at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
at org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker.run(AxisEngine.java:626)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at org.apache.axis2.transport.mail.MailTransportSender.sendMail(MailTransportSender.java:494)
... 6 more
[2015-10-06 10:41:12,318] INFO - AxisEngine [MessageContext: logID=b5929ba2da80889c3ab62f36ecb6135d5b61e29a42314ca3] Error generating mail message
[2015-10-06 10:41:12,318] ERROR - AsyncCallback Error generating mail message
org.apache.axis2.AxisFault: Error generating mail message
at org.apache.axis2.transport.base.AbstractTransportSender.handleException(AbstractTransportSender.java:226)
at org.apache.axis2.transport.mail.MailTransportSender.sendMessage(MailTransportSender.java:184)
at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
at org.apache.axis2.engine.AxisEngine$TransportNonBlockingInvocationWorker.run(AxisEngine.java:626)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
Files required for sample are available here:
https://docs.wso2.com/download/attachments/38472395/sample_vfs.zip?version=1&modificationDate=1401834663000&api=v2
Am I doing anything wrong here or this XSD file is removed from mentioned location?
Any help or tip on this is appreciated.
Thanks
When creating local entry using WSO2 UI, it adds an extra entry automatically for http://ws.apache.org/ns/synapse.
Removing this manually from local entry file (xml file on the file system) resolved the issue.
Thanks

How to handle endpoint failure in wso2esb and wso2dss

I created proxy services using wso2dss for data insertion, so services working fine I am quite happy with this. But while any data duplication errors occurred in wso2dss I need to handle it in wso2esb so I kept this property in wso2esb for dss level error handle:
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
So its working fine I am getting 50000 code using this I am able to handle error while this error my esb showing this message:
[2014-03-07 11:22:40,778] INFO - LogMediator To: /services/GeoLocationInsertion, MessageID: urn:uuid:b51629e2-934e-4227-8f50-65fd9f719b8e, Direction: request, userid = -1212807836, username = sa|214057357158656, password = sa
[2014-03-07 11:22:40,783] INFO - LogMediator To: /services/ServiceLogin, MessageID: urn:uuid:1967bde1-d820-46f9-957d-55fbb6f7ea9e, Direction: request, usercode = sa, clientid = 214057357158656
[2014-03-07 11:22:40,833] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:24aea5ed-f4e2-4214-809b-b3101031edf7, Direction: response, faisal = true
[2014-03-07 11:22:40,838] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:42a17360-cd04-43bc-83ef-1f53b639de11, Direction: response, kk = true
[2014-03-07 11:22:40,853] WARN - EndpointContext Endpoint : endpoint_71f1485e740c2b97ec407fe4d3bf86929122480f208b6642 will be marked SUSPENDED as it failed
[2014-03-07 11:22:40,853] WARN - EndpointContext Suspending endpoint : endpoint_71f1485e740c2b97ec407fe4d3bf86929122480f208b6642 - last suspend duration was : 30000ms and current suspend duration is : 30000ms - Next retry after : Fri Mar 07 11:23:10 IST 2014
[2014-03-07 11:22:40,856] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:42a17360-cd04-43bc-83ef-1f53b639de11, Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 500000, ERROR_MESSAGE = null
[2014-03-07 11:22:40,857] INFO - LogMediator To: , WSAction: , SOAPAction: , MessageID: urn:uuid:42a17360-cd04-43bc-83ef-1f53b639de11, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ResponseJSON><Body><Data><Exception>duplicate key value violates or The system is attempting to access an inactive service </Exception></Data></Body><Status>500000</Status></ResponseJSON></soapenv:Body></soapenv:Envelope>
Above error message means my endpoint gone into suspend mode after 30sec it will automatically in active mode.
If any user tries on the same time he is unable to insert his correct data and he is losing the data due to endpoint nonavailability. So how we can keep endpoint in active mode?
If any other error will come this issue is not raising:
[2014-03-07 11:22:40,853] WARN - EndpointContext Suspending endpoint : endpoint_71f1485e740c2b97ec407fe4d3bf86929122480f208b6642 - last suspend duration was : 30000ms and current suspend duration is : 30000ms - Next retry after : Fri Mar 07 11:23:10 IST 2014
So how would I do this?
If I remove the property I am unable to handle DSS level message and I am getting error like this even my user not getting any response:
[2014-03-07 11:20:51,816] ERROR - NativeWorkerPool Uncaught exception
java.lang.ClassCastException: org.apache.axiom.om.impl.llom.OMElementImpl cannot be cast to org.apache.axiom.soap.SOAPFault
at org.apache.axiom.soap.impl.llom.SOAPBodyImpl.getFault(SOAPBodyImpl.java:120)
at org.apache.synapse.util.POXUtils.convertSOAPFaultToPOX(POXUtils.java:46)
at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:91)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:308)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:92)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:232)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:222)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
So that 30sec are so important, it causes my client's data loss. How could I avoid this endpoint failure?
The actual error in wso2dss is:
Nested Exception:-
org.postgresql.util.PSQLException: ERROR: column "deviceid" is of type bigint but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 81
at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.execute(DSOMDataSource.java:105)
at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.serialize(DSOMDataSource.java:110)
at org.wso2.carbon.dataservices.core.engine.DSOMDataSource.getReader(DSOMDataSource.java:116)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:225)
... 41 more
I handle it in wso2esb fault and working fine also but endpoint failure is uncatchble
If you want to configure your DSS endpoint's suspension behavior in the ESB, please refer to the Endpoint Error Handling documentation.
If you drop the FORCE_ERROR_ON_SOAP_FAULT property, you should still be able to handle a soap fault from your DSS response in the out sequence of an ESB proxy.
yo can disable that config with this configuration in your endpoint:
<?xml version="1.0"?>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService">
<timeout>
<duration>30000</duration>
<responseAction>fault</responseAction>
</timeout>
<suspendOnFailure>
<errorCodes>-1</errorCodes>
<initialDuration>0</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>0</maximumDuration>
</suspendOnFailure>
<markForSuspension>
<errorCodes>-1</errorCodes>
</markForSuspension>
</address>
</endpoint>
I came up with this error myself and it was terrible to identify it and find a way to work with it. It seems there is a bug in older versions of WSO2 ESB (we have this problem with version 4.8.1) when dealing with a returned soap fault.
You can see the answer of #JorgeInfanteOsorio to disable the endpoint suspension, but you will need an workaround for the "Uncaught exception" issue. What I found is that it is possible to retrieve the parameters from the fault message and then "clear" the current payload, so any subsequent calls wont return the exception issue.
Example:
<!--
After we call a webservice on DSS or other webservice we check if the message contains a fault message
-->
<property xmlns:s="http://www.w3.org/2003/05/soap-envelope"
name="return_fault"
expression="/s:Envelope/s:Body/s:Fault"/>
<filter source="boolean(get-property('return_payzen_fault'))" regex="true">
<then>
<!--
There is a fault message on the payload...
-->
<!--
Retrieve the information from the fault message. How you will access it and which information you will retrieve may be different depending if the answer comes from a third part webservice or from your own DSS.
-->
<property xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" name="code" expression="/s:Envelope/s:Body/s:Fault/s:Code/s:faultcode"/>
<property xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" name="code" expression="/s:Envelope/s:Body/s:Fault/s:Code/s:faultstring"/>
<!--
Clear the payload containing the fault message
-->
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body/>
</soapenv:Envelope>
</format>
<args/>
</payloadFactory>
<!--
Now you can proceed and process the message as usual without getting the exception. You may probably use the parameters stored in the properties at the beginning to determine which error occured and what you are going to do next.
-->
</then>
</filter>
<!--
There is no fault message, you can proceed with the message processing here.
-->