Monday, June 11, 2018

javax.servlet.ServletException: Circular view path [customers]

javax.servlet.ServletException: Circular view path [customers]: would dispatch back to the current handler URL [/customers] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:209) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:147) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:866) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) ~[spring-webmvc-5.0.6.RELEASE.jar:5.0.6.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.31.jar:8.5.31]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.31.jar:8.5.31]


Friday, January 5, 2018

java.lang.ClassNotFoundException: org.apache.http.conn.ManagedHttpClientConnection

Encountered following while trying to save a file on aws s3:

Trace:

<Jan 5, 2018 4:43:34 PM GMT> <Error> <HTTP> <BEA-101017> <[ServletContext@126209232[app:testservices-ear-0 module:testservices path:/testservices spec-version:2.5]] Root cause of ServletException.
java.lang.NoClassDefFoundError: org/apache/http/conn/ManagedHttpClientConnection
        at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doSendRequest(SdkHttpRequestExecutor.java:50)
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
        at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:715)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:520)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
        at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:843)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:597)
        at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:363)
        at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:329)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:308)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3659)
        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3612)
        at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:743)
        at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:749)     
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1499)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: java.lang.ClassNotFoundException: org.apache.http.conn.ManagedHttpClientConnection
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
        at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doSendRequest(SdkHttpRequestExecutor.java:50)
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)

Solution that worked for me

In my it was a jar conflict due to which an older httpclient was being added after adding an exclusion on the older one the problem got resolved. You can see the jar in Dependency Hierarchy in Eclipse.

If httpclient is not coming through transitive dependencies then you can add it to pom.

Add a dependency to httpclient jar.:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.4</version>
</dependency>