Monday, 15 July 2013

Jersey Restful failed with error "java.lang.NoSuchMethodException: Could not find a suitable constructor" -



Jersey Restful failed with error "java.lang.NoSuchMethodException: Could not find a suitable constructor" -

the simple restful code based on jersey

class="lang-java prettyprint-override">import javax.ws.rs.applicationpath; import javax.ws.rs.core.application; import com.yakima.core.webservice.resource.userresource; import org.glassfish.jersey.jettison.jettisonfeature; import org.glassfish.jersey.server.resourceconfig; import java.util.hashset; import java.util.set; import java.util.logging.logger; @applicationpath("/") public class servlet extends resourceconfig{ logger log = logger.getlogger(servlet.class.getname()); public servlet() { registerclasses(userresource.class); register(new jettisonfeature()); packages("com.yakima.core.webservice"); log.info("--------------registered--------"); } }

resource class

class="lang-java prettyprint-override">import javax.persistence.*; import javax.ws.rs.*; import javax.ws.rs.core.context; import javax.ws.rs.core.mediatype; import javax.ws.rs.core.uriinfo; import org.codehaus.jettison.json.jsonexception; import org.codehaus.jettison.json.jsonobject; import java.util.list; import java.util.logging.logger; @path("/") public class userresource { logger log = logger.getlogger(userresource.class.getname()); @persistenceunit(unitname = "dev") entitymanagerfactory emf; @context uriinfo uriinfo; public userresource() { } @get @path("ping") @produces(mediatype.text_plain) @suppresswarnings("unchecked") public string getheathcheck() { log.info("getheathcheck"); homecoming "pang"; } }

web.xml

class="lang-xml prettyprint-override"><?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>my rest service</display-name> <servlet> <servlet-name>jersey rest service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.servletcontainer</servlet-class> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.yakima.core.webservice</param-value> </init-param> <init-param> <param-name>unit:dev</param-name> <param-value>persistence/dev</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey rest service</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping> <persistence-unit-ref> <persistence-unit-ref-name>persistence/dev</persistence-unit-ref-name> <persistence-unit-name>dev</persistence-unit-name> </persistence-unit-ref> </web-app>

persistence.xml

class="lang-xml prettyprint-override"><?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="dev" transaction-type="jta"> <provider>oracle.toplink.essentials.persistenceprovider</provider> <properties> <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/dev"/> <property name="toplink.jdbc.user" value="root"/> <property name="toplink.jdbc.driver" value="com.mysql.jdbc.driver"/> <property name="toplink.jdbc.password" value="password"/> <property name="toplink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit>

error shows below after deploy

class="lang-java prettyprint-override"> jun 26, 2014 1:59:18 org.glassfish.jersey.internal.errors logerrors warning: next warnings have been detected: warning: hk2 service reification failed [com.yakima.core.webservice.resource.userresource] exception: multiexception stack 1 of 2 java.lang.nosuchmethodexception: not find suitable constructor in com.yakima.core.webservice.resource.userresource class. @ org.glassfish.jersey.internal.inject.jerseyclassanalyzer.getconstructor(jerseyclassanalyzer.java:189) @ org.jvnet.hk2.internal.utilities.getconstructor(utilities.java:183) @ org.jvnet.hk2.internal.clazzcreator.initialize(clazzcreator.java:129) @ org.jvnet.hk2.internal.clazzcreator.initialize(clazzcreator.java:182) @ org.jvnet.hk2.internal.systemdescriptor.internalreify(systemdescriptor.java:649) @ org.jvnet.hk2.internal.systemdescriptor.reify(systemdescriptor.java:604) @ org.jvnet.hk2.internal.servicelocatorimpl.reifydescriptor(servicelocatorimpl.java:417) @ org.jvnet.hk2.internal.servicelocatorimpl.narrow(servicelocatorimpl.java:2099) @ org.jvnet.hk2.internal.servicelocatorimpl.access$900(servicelocatorimpl.java:119) @ org.jvnet.hk2.internal.servicelocatorimpl$8.compute(servicelocatorimpl.java:1051) @ org.jvnet.hk2.internal.servicelocatorimpl$8.compute(servicelocatorimpl.java:1046) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture$1.call(lruhybridcache.java:115) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture$1.call(lruhybridcache.java:111) @ java.util.concurrent.futuretask.run(futuretask.java:262) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture.run(lruhybridcache.java:173) @ org.glassfish.hk2.utilities.cache.lruhybridcache.compute(lruhybridcache.java:292) @ org.jvnet.hk2.internal.servicelocatorimpl.internalgetdescriptor(servicelocatorimpl.java:1135) @ org.jvnet.hk2.internal.servicelocatorimpl.getservice(servicelocatorimpl.java:636) @ org.jvnet.hk2.internal.servicelocatorimpl.getservice(servicelocatorimpl.java:626) @ org.glassfish.jersey.internal.inject.injections.getorcreate(injections.java:172) @ org.glassfish.jersey.server.model.methodhandler$classbasedmethodhandler.getinstance(methodhandler.java:185) @ org.glassfish.jersey.server.internal.routing.pushmethodhandlerrouter.apply(pushmethodhandlerrouter.java:74) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:112) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage.apply(routingstage.java:94) @ org.glassfish.jersey.server.internal.routing.routingstage.apply(routingstage.java:63) @ org.glassfish.jersey.process.internal.stages.process(stages.java:197) @ org.glassfish.jersey.server.serverruntime$1.run(serverruntime.java:261) @ org.glassfish.jersey.internal.errors$1.call(errors.java:271) @ org.glassfish.jersey.internal.errors$1.call(errors.java:267) @ org.glassfish.jersey.internal.errors.process(errors.java:315) @ org.glassfish.jersey.internal.errors.process(errors.java:297) @ org.glassfish.jersey.internal.errors.process(errors.java:267) @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:297) @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:252) @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:1025) @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:372) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:382) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:345) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:220) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:98) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1040) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:607) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:313) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:744) multiexception stack 2 of 2 java.lang.illegalargumentexception: errors discovered while reifying systemdescriptor( implementation=com.yakima.core.webservice.resource.userresource contracts={com.yakima.core.webservice.resource.userresource} scope=org.glassfish.jersey.process.internal.requestscoped qualifiers={} descriptortype=class descriptorvisibility=normal metadata= rank=0 loader=null proxiable=null proxyforsamescope=null analysisname=null id=144 locatorid=2 identityhashcode=701724234 reified=false) @ org.jvnet.hk2.internal.systemdescriptor.reify(systemdescriptor.java:615) @ org.jvnet.hk2.internal.servicelocatorimpl.reifydescriptor(servicelocatorimpl.java:417) @ org.jvnet.hk2.internal.servicelocatorimpl.narrow(servicelocatorimpl.java:2099) @ org.jvnet.hk2.internal.servicelocatorimpl.access$900(servicelocatorimpl.java:119) @ org.jvnet.hk2.internal.servicelocatorimpl$8.compute(servicelocatorimpl.java:1051) @ org.jvnet.hk2.internal.servicelocatorimpl$8.compute(servicelocatorimpl.java:1046) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture$1.call(lruhybridcache.java:115) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture$1.call(lruhybridcache.java:111) @ java.util.concurrent.futuretask.run(futuretask.java:262) @ org.glassfish.hk2.utilities.cache.lruhybridcache$originthreadawarefuture.run(lruhybridcache.java:173) @ org.glassfish.hk2.utilities.cache.lruhybridcache.compute(lruhybridcache.java:292) @ org.jvnet.hk2.internal.servicelocatorimpl.internalgetdescriptor(servicelocatorimpl.java:1135) @ org.jvnet.hk2.internal.servicelocatorimpl.getservice(servicelocatorimpl.java:636) @ org.jvnet.hk2.internal.servicelocatorimpl.getservice(servicelocatorimpl.java:626) @ org.glassfish.jersey.internal.inject.injections.getorcreate(injections.java:172) @ org.glassfish.jersey.server.model.methodhandler$classbasedmethodhandler.getinstance(methodhandler.java:185) @ org.glassfish.jersey.server.internal.routing.pushmethodhandlerrouter.apply(pushmethodhandlerrouter.java:74) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:112) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage._apply(routingstage.java:115) @ org.glassfish.jersey.server.internal.routing.routingstage.apply(routingstage.java:94) @ org.glassfish.jersey.server.internal.routing.routingstage.apply(routingstage.java:63) @ org.glassfish.jersey.process.internal.stages.process(stages.java:197) @ org.glassfish.jersey.server.serverruntime$1.run(serverruntime.java:261) @ org.glassfish.jersey.internal.errors$1.call(errors.java:271) @ org.glassfish.jersey.internal.errors$1.call(errors.java:267) @ org.glassfish.jersey.internal.errors.process(errors.java:315) @ org.glassfish.jersey.internal.errors.process(errors.java:297) @ org.glassfish.jersey.internal.errors.process(errors.java:267) @ org.glassfish.jersey.process.internal.requestscope.runinscope(requestscope.java:297) @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:252) @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:1025) @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:372) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:382) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:345) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:220) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:98) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1040) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:607) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:313) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:744) libs ls -l /var/lib/tomcat7/webapps/webservice/web-inf/lib/ total 6648 -rw-r--r-- 1 tomcat7 tomcat7 14787 jun 17 17:35 aopalliance-repackaged-2.3.0-b05.jar -rw-r--r-- 1 tomcat7 tomcat7 159444 jun 17 17:35 hk2-api-2.3.0-b05.jar -rw-r--r-- 1 tomcat7 tomcat7 162326 jun 17 17:35 hk2-locator-2.3.0-b05.jar -rw-r--r-- 1 tomcat7 tomcat7 82770 jun 17 17:35 hk2-utils-2.3.0-b05.jar -rw-r--r-- 1 tomcat7 tomcat7 714194 jun 17 17:35 javassist-3.18.1-ga.jar -rw-r--r-- 1 tomcat7 tomcat7 26366 jun 17 17:35 javax.annotation-api-1.2.jar -rw-r--r-- 1 tomcat7 tomcat7 5942 jun 17 17:35 javax.inject-2.3.0-b05.jar -rw-r--r-- 1 tomcat7 tomcat7 112758 jun 17 17:35 javax.ws.rs-api-2.0.jar -rw-r--r-- 1 tomcat7 tomcat7 151913 jun 17 17:35 jersey-client-2.9.jar -rw-r--r-- 1 tomcat7 tomcat7 722711 jun 18 13:41 jersey-common-2.9.1.jar -rw-r--r-- 1 tomcat7 tomcat7 15719 jun 18 23:25 jersey-container-servlet-2.9.1.jar -rw-r--r-- 1 tomcat7 tomcat7 54943 jun 18 12:16 jersey-container-servlet-core-2.9.1.jar -rw-r--r-- 1 tomcat7 tomcat7 962867 jun 17 17:35 jersey-guava-2.9.jar -rw-r--r-- 1 tomcat7 tomcat7 46504 jun 18 12:07 jersey-media-json-jettison-2.9.1.jar -rw-r--r-- 1 tomcat7 tomcat7 915852 jun 18 13:37 jersey-server-2.9.1.jar -rw-r--r-- 1 tomcat7 tomcat7 81899 apr 29 11:37 jettison-1.3.5.jar -rw-r--r-- 1 tomcat7 tomcat7 20235 jun 17 17:35 osgi-resource-locator-1.0.1.jar -rw-r--r-- 1 tomcat7 tomcat7 53842 jun 17 17:13 persistence-api-1.0.2.jar -rw-r--r-- 1 tomcat7 tomcat7 26514 aug 1 2013 stax-api-1.0.1.jar -rw-r--r-- 1 tomcat7 tomcat7 2370900 jun 18 12:15 toplink-essentials-1.0.jar -rw-r--r-- 1 tomcat7 tomcat7 63777 jun 18 12:03 validation-api-1.1.0.final.jar

anything wrong? appreciate help

jersey resource instantiation expects parameterless constructor. may should create no-arg constructor base of operations class inherited classes.

java jersey

No comments:

Post a Comment