Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.

500, 504 service errors on ajax calls

Avatar

Level 7

Hi,

I have an AEM servlet which in turn call google recaptcha web service.

Application makes an ajax call to AEM Servlet and google recaptcha inside the servlet.

Sometimes, google recaptcha server is not reachable and code is throwing HttpHostConnectException ( connection timeout, 500 , 504 service errors thrown) and application hangs.

I do have catch block with IOException and I do see logs with exception stacktrace.

Question :  Why does application hangs, even though I am handling the exception?

Question : Is there any way to come out of this and let the application flow , rather than hang ( on front end ajax call or on AEM Server level configuration ??)

Thanks,

Sri

5 Replies

Avatar

Level 10

How are you maknig the call to the Google Service - is this a Rest call? Are you using Java HTTP APIs?

See this articles as en example of calling a Google Restful service -- Creating an Adobe Experience Manager 6.3 HTL Component that displays data from a Restful Web Service

Avatar

Level 7

Using Apache HttpClient api. Yes google service is a rest service.

Avatar

Level 10

I just tested a call to Google Service - by following the article listed above. It works nicely.

Client.png

If the endpoint is down or not responsive - you have to handle that in your logic.  THis specific endpoint is up and as you can see - it returns the value - where we write it out in HTL.

As a side note here - we are updating this use case to AEM 6.4 as well.

Avatar

Level 7

Using Apache HttpClient api. Yes google service is a rest service. I need to know when httplcient.execute happens and service connection is taking indefinite time, then connection times out and application hangs with 5xx error responses in ajax. How to handle this scenario at AEM server level or service side or ajax side , so that application does not stay in loading state forever.

Avatar

Level 10

If the code that calls this is Java, then handle it. This is more of a Java question then an AEM question:

Java HTTP Client Request with defined timeout - Stack Overflow