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.

https://java.net/jira/browse/glassfish-20515

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

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -