jax-rs 2.0 and Glassfish 4 unable to @consume JSON into Pojo -
i'm trying create plain sample consume json message , inject in pojo object.
i'm using netbeans dev build javaee7 support , latest glassfish 4 promoted build.
when call post method json message, obtain stackstrace in log. @ point, don't see if i'm doing wrong. expecting work fine in jax-rs 2.
help appreciated.
here stacktrace , source code.
warning: standardwrappervalve[org.netbeans.rest.application.config.applicationconfig]: servlet.service() servlet org.netbeans.rest.application.config.applicationconfig threw exception org.codehaus.jackson.map.exc.unrecognizedpropertyexception: unrecognized field "name" (class com.demo.user), not marked ignorable @ [source: org.glassfish.jersey.message.internal.entityinputstream@d03ff; line: 1, column: 10] (through reference chain: com.demo.user["name"]) @ org.codehaus.jackson.map.exc.unrecognizedpropertyexception.from(unrecognizedpropertyexception.java:53) @ org.codehaus.jackson.map.deser.stddeserializationcontext.unknownfieldexception(stddeserializationcontext.java:267) @ org.codehaus.jackson.map.deser.std.stddeserializer.reportunknownproperty(stddeserializer.java:673) @ org.codehaus.jackson.map.deser.std.stddeserializer.handleunknownproperty(stddeserializer.java:659) @ org.codehaus.jackson.map.deser.beandeserializer.handleunknownproperty(beandeserializer.java:1365) @ org.codehaus.jackson.map.deser.beandeserializer._handleunknown(beandeserializer.java:725) @ org.codehaus.jackson.map.deser.beandeserializer.deserializefromobject(beandeserializer.java:703) @ org.codehaus.jackson.map.deser.beandeserializer.deserialize(beandeserializer.java:580) @ org.codehaus.jackson.map.objectmapper._readvalue(objectmapper.java:2704) @ org.codehaus.jackson.map.objectmapper.readvalue(objectmapper.java:1315) @ org.codehaus.jackson.jaxrs.jacksonjsonprovider.readfrom(jacksonjsonprovider.java:419) @ org.glassfish.jersey.message.internal.readerinterceptorexecutor$terminalreaderinterceptor.aroundreadfrom(readerinterceptorexecutor.java:181) @ org.glassfish.jersey.message.internal.readerinterceptorexecutor.proceed(readerinterceptorexecutor.java:134) @ org.glassfish.jersey.server.internal.mappableexceptionwrapperinterceptor.aroundreadfrom(mappableexceptionwrapperinterceptor.java:72) @ org.glassfish.jersey.message.internal.readerinterceptorexecutor.proceed(readerinterceptorexecutor.java:134) @ org.glassfish.jersey.message.internal.messagebodyfactory.readfrom(messagebodyfactory.java:828) @ org.glassfish.jersey.message.internal.inboundmessagecontext.readentity(inboundmessagecontext.java:833) @ org.glassfish.jersey.server.containerrequest.readentity(containerrequest.java:245) @ org.glassfish.jersey.server.internal.inject.entityparamvaluefactoryprovider$entityvaluefactory.get(entityparamvaluefactoryprovider.java:96) @ org.glassfish.jersey.server.internal.inject.abstracthttpcontextvaluefactory.provide(abstracthttpcontextvaluefactory.java:66) @ org.glassfish.jersey.server.spi.internal.parametervaluehelper.getparametervalues(parametervaluehelper.java:81) @ org.glassfish.jersey.server.model.internal.javaresourcemethoddispatcherprovider$abstractmethodparaminvoker.getparamvalues(javaresourcemethoddispatcherprovider.java:121) @ org.glassfish.jersey.server.model.internal.javaresourcemethoddispatcherprovider$voidoutinvoker.dodispatch(javaresourcemethoddispatcherprovider.java:136) @ org.glassfish.jersey.server.model.internal.abstractjavaresourcemethoddispatcher.dispatch(abstractjavaresourcemethoddispatcher.java:91) @ org.glassfish.jersey.server.model.resourcemethodinvoker.invoke(resourcemethodinvoker.java:346) @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:341) @ org.glassfish.jersey.server.model.resourcemethodinvoker.apply(resourcemethodinvoker.java:101) @ org.glassfish.jersey.server.serverruntime$1.run(serverruntime.java:224) @ 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:317) @ org.glassfish.jersey.server.serverruntime.process(serverruntime.java:198) @ org.glassfish.jersey.server.applicationhandler.handle(applicationhandler.java:946) @ org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:323) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:372) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:335) @ org.glassfish.jersey.servlet.servletcontainer.service(servletcontainer.java:218) @ org.apache.catalina.core.standardwrapper.service(standardwrapper.java:1682) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:318) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:160) @ org.apache.catalina.core.standardpipeline.doinvoke(standardpipeline.java:734) @ org.apache.catalina.core.standardpipeline.invoke(standardpipeline.java:673) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:174) @ org.apache.catalina.connector.coyoteadapter.doservice(coyoteadapter.java:357) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:260) @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:188) @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:191) @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:168) @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:189) @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:288) @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:206) @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:136) @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:114) @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77) @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:838) @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:113) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:115) @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:55) @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable.run(workerthreadiostrategy.java:135) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.dowork(abstractthreadpool.java:564) @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpool.java:544) @ java.lang.thread.run(thread.java:722) user.java
package com.demo; import javax.xml.bind.annotation.xmlaccesstype; import javax.xml.bind.annotation.xmlaccessortype; import javax.xml.bind.annotation.xmlrootelement; @xmlrootelement @xmlaccessortype(xmlaccesstype.field) public class user { public string name; public string lastname; } helloresource.java
package com.demo; import javax.annotation.postconstruct; import javax.inject.inject; import javax.ws.rs.consumes; import javax.ws.rs.get; import javax.ws.rs.post; import javax.ws.rs.path; import javax.ws.rs.produces; @path("hello") public class helloresource { @postconstruct public void init(){ system.out.println(helloresource.class + " post construct"); } @get @produces("text/plain") public string gethello(){ return "hello : "; } @post @consumes("text/plain") public void sayhello(string message){ system.out.println("say hello : " + message); } @post @consumes("application/json") public void hellojson(user user){ system.out.println("hellojson user : " + user); } } newjerseyclient.java
package com.demo; import com.sun.jersey.api.client.client; import com.sun.jersey.api.client.uniforminterfaceexception; import com.sun.jersey.api.client.webresource; /** * jersey rest client generated rest resource:helloresource [hello]<br> * usage: * <pre> * newjerseyclient client = new newjerseyclient(); * object response = client.xxx(...); * // whatever response * client.close(); * </pre> * * @author sdionne1 */ public class newjerseyclient { private webresource webresource; private client client; private static final string base_uri = "http://localhost:8080/webapplication1/resources"; public newjerseyclient() { com.sun.jersey.api.client.config.clientconfig config = new com.sun.jersey.api.client.config.defaultclientconfig(); client = client.create(config); webresource = client.resource(base_uri).path("hello"); } public void hellojson(object requestentity) throws uniforminterfaceexception { webresource.type(javax.ws.rs.core.mediatype.application_json).post(requestentity); } public string gethello() throws uniforminterfaceexception { webresource resource = webresource; return resource.accept(javax.ws.rs.core.mediatype.text_plain).get(string.class); } public void sayhello(object requestentity) throws uniforminterfaceexception { webresource.type(javax.ws.rs.core.mediatype.text_plain).post(requestentity); } public void close() { client.destroy(); } public static void main(string[] args){ newjerseyclient client = new newjerseyclient(); user user = new user(); user.name="name1"; user.lastname="lastname2"; client.hellojson(user); client.close(); } } i open jira issue keep trace of that, if else had same issue.
with jax-rs 2.0, use standard jax-rs client api, not jersey client api. so, like:
public static void main(string[] args){ javax.ws.rs.client.client client = javax.ws.rs.client.clientbuilder.newclient(); user user = new user(); user.name="name1"; user.lastname="lastname2"; javax.ws.rs.client.webtarget myresource = client.target("http://localhost:8080/webapplication1/resources"); myresource.request(mediatype.application_json) .post(user); client.close(); } i'm not sure why jersey client api didn't work in case.
for more information, see the java ee 7 tutorial chapter on client api
Comments
Post a Comment