i trying experiment try cache json response jersey controller / web service see if has impact on performance.
i have following jersey rest service.
@component @path("/client") @produces(mediatype.application_json) public class clientcontroller { private static logger logger = loggerfactory.getlogger(clientcontroller.class); @autowired iclientservice clientservice; @get @cacheable(value = "jerseycache") public string getclients() { return "nothing, i'm sync!"; } @get @path("/deferred") public deferredresult<string> getclientsasync() { deferredresult<string> deferredresult = new deferredresult<>(); deferredresult.setresult("nothing! i'm async!"); return deferredresult; } @get @path("/async") public void getclientsjaxrsasync(@suspended asyncresponse response) { new thread(() -> { response.resume("i async too! using @suspended"); }).start(); } @get @path("{id}") public client getclient(@pathparam("id") long id) { return new client(); } @post @consumes(mediatype.application_json) public client createclient(@valid client client) { return new client(); } @put @path("{id}") @consumes(mediatype.application_json) public void updateclient(@pathparam("id") long id, @valid client client) { return; } @delete @path("{id}") public void deleteclient(@pathparam("id")long id) { return; } when call /api/client following stacktrace.
15:01:55.681 error directjdklog.log - servlet.service() servlet [jerseyservlet] in context path [] threw exception [java.lang.nullpointerexception] root cause java.lang.nullpointerexception: null @ org.springframework.cache.interceptor.abstractcacheresolver.resolvecaches(abstractcacheresolver.java:78) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheaspectsupport.getcaches(cacheaspectsupport.java:216) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheaspectsupport$cacheoperationcontext.<init>(cacheaspectsupport.java:568) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheaspectsupport.getoperationcontext(cacheaspectsupport.java:229) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheaspectsupport$cacheoperationcontexts.<init>(cacheaspectsupport.java:511) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheaspectsupport.execute(cacheaspectsupport.java:302) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.cache.interceptor.cacheinterceptor.invoke(cacheinterceptor.java:61) ~[spring-context-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.aop.framework.reflectivemethodinvocation.proceed(reflectivemethodinvocation.java:179) ~[spring-aop-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy.java:653) ~[spring-aop-4.2.0.rc1.jar:4.2.0.rc1] @ net.jkratz.agility.web.clientcontroller$$enhancerbyspringcglib$$1ad41944.getclients(<generated>) ~[spring-core-4.2.0.rc1.jar:na] @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) ~[na:1.8.0_45] @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) ~[na:1.8.0_45] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[na:1.8.0_45] @ java.lang.reflect.method.invoke(method.java:497) ~[na:1.8.0_45] @ org.glassfish.jersey.server.model.internal.resourcemethodinvocationhandlerfactory$1.invoke(resourcemethodinvocationhandlerfactory.java:81) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher$1.run(abstractjavaresourcemethoddispatcher.java:144) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.invoke(abstractjavaresourcemethoddispatcher.java:161) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.internal.javaresourcemethoddispatcherprovider$typeoutinvoker.dodispatch(javaresourcemethoddispatcherprovider.java:205) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.dispatch(abstractjavaresourcemethoddispatcher.java:99) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.resourcemethodinvoker.invoke(resourcemethodinvoker.java:389) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:347) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:102) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.serverruntime$2.run(serverruntime.java:308) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.internal.errors$1.call(errors.java:271) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.internal.errors$1.call(errors.java:267) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.internal.errors.process(errors.java:315) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.internal.errors.process(errors.java:297) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.internal.errors.process(errors.java:267) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:317) ~[jersey-common-2.18.jar:na] @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:291) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:1140) ~[jersey-server-2.18.jar:na] @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:403) ~[jersey-container-servlet-core-2.18.jar:na] @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:386) ~[jersey-container-servlet-core-2.18.jar:na] @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:334) ~[jersey-container-servlet-core-2.18.jar:na] @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:221) ~[jersey-container-servlet-core-2.18.jar:na] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:291) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) ~[tomcat-embed-websocket-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.boot.actuate.autoconfigure.endpointwebmvcautoconfiguration$applicationcontextheaderfilter.dofilterinternal(endpointwebmvcautoconfiguration.java:329) ~[spring-boot-actuator-1.3.0.m1.jar:1.3.0.m1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.boot.actuate.trace.webrequesttracefilter.dofilterinternal(webrequesttracefilter.java:102) ~[spring-boot-actuator-1.3.0.m1.jar:1.3.0.m1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.web.filter.requestcontextfilter.dofilterinternal(requestcontextfilter.java:99) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.web.filter.hiddenhttpmethodfilter.dofilterinternal(hiddenhttpmethodfilter.java:77) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:85) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.springframework.boot.actuate.autoconfigure.metricsfilter.dofilterinternal(metricsfilter.java:68) ~[spring-boot-actuator-1.3.0.m1.jar:1.3.0.m1] @ org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107) ~[spring-web-4.2.0.rc1.jar:4.2.0.rc1] @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:239) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:219) ~[tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:106) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:142) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:79) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:88) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:518) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1091) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:668) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1521) [tomcat-embed-core-8.0.23.jar:8.0.23] @ org.apache.tomcat.util.net.nioendpoint$socketprocessor.run(nioendpoint.java:1478) [tomcat-embed-core-8.0.23.jar:8.0.23] @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) [na:1.8.0_45] @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) [na:1.8.0_45] @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) [tomcat-embed-core-8.0.23.jar:8.0.23] @ java.lang.thread.run(thread.java:745) [na:1.8.0_45] here cacheconfig
@configuration @enablecaching public class cacheconfig implements cachingconfigurer { @bean @override public cachemanager cachemanager() { ehcachecachemanager cachemanager = new ehcachecachemanager(); cachemanager.setcachemanager(ehcachemanagerfactorybean().getobject()); return cachemanager; } @bean @override public keygenerator keygenerator() { return new simplekeygenerator(); } @override public cacheresolver cacheresolver() { return new simplecacheresolver(); } @override public cacheerrorhandler errorhandler() { return new simplecacheerrorhandler(); } @bean public ehcachemanagerfactorybean ehcachemanagerfactorybean() { ehcachemanagerfactorybean ehcachemanagerfactorybean = new ehcachemanagerfactorybean(); ehcachemanagerfactorybean.setconfiglocation(new classpathresource("ehcache.xml")); ehcachemanagerfactorybean.setshared(true); ehcachemanagerfactorybean.setcachemanagername("agilitycachemanager"); return ehcachemanagerfactorybean; } finally ehcache.xml
<?xml version="1.0" encoding="utf-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="http://ehcache.org/ehcache.xsd" updatecheck="false" monitoring="autodetect" dynamicconfig="true"> <diskstore path="java.io.tmpdir" /> <defaultcache maxelementsinmemory="10000" eternal="false" timetoidleseconds="0" timetoliveseconds="0" overflowtodisk="true" diskspoolbuffersizemb="50" maxelementsondisk="100000" diskexpirythreadintervalseconds="300" memorystoreevictionpolicy="lru" statistics="true"> </defaultcache> <cache name="jerseycache" maxelementsinmemory="10000" eternal="false" timetoidleseconds="0" timetoliveseconds="0" overflowtodisk="true" diskspoolbuffersizemb="50" maxelementsondisk="100000" diskexpirythreadintervalseconds="300" memorystoreevictionpolicy="lru" statistics="true"> </cache> <cache name="org.hibernate.cache.spi.updatetimestampscache" maxelementsinmemory="10000" eternal="false"> </cache> <cache name="org.hibernate.cache.internal.standardquerycache" maxelementsinmemory="10000" eternal="false" timetoliveseconds="300"> </cache> </ehcache>
i got similar issue migrating spring 3.2.13 4.2.1 . works replace "implements cachingconfigurer" "extends cachingconfigurersupport".
Comments
Post a Comment