Error 500 when sending android object to web service Rest

1

I'm having a problem sending an object from a java class to my web service. Using RestFull web service on glassfish and android using volley and gson. I get a 500 error when I try to send the object.

LogCat Log on android:

04-27 19:24:14.635: I/JSONOBJECT ADD VENDA->(3027): {"Venda":"model.Venda@52dfabc4"}
04-27 19:24:14.695: I/qtaguid(3027): Failed write_ctrl(u 44) res=-1 errno=22
04-27 19:24:14.695: I/qtaguid(3027): Untagging socket 44 failed errno=-22
04-27 19:24:14.695: W/NetworkManagementSocketTagger(3027): untagSocket(44) failed with errno -22
04-27 19:24:14.695: E/Volley(3027): [154] BasicNetwork.performRequest: Unexpected response code 500 for http://10.67.95.223:8080/BMSystem/webresources/venda/realizarvenda/
04-27 19:24:14.695: D/AndroidRuntime(3027): Shutting down VM
04-27 19:24:14.695: W/dalvikvm(3027): threadid=1: thread exiting with uncaught exception (group=0xa4bbe648)
04-27 19:24:14.695: E/AndroidRuntime(3027): FATAL EXCEPTION: main
04-27 19:24:14.695: E/AndroidRuntime(3027): java.lang.NullPointerException: println needs a message
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.util.Log.println_native(Native Method)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.util.Log.e(Log.java:231)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at br.com.appbmsystem.MainActivityInterno$3.onErrorResponse(MainActivityInterno.java:421)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at com.android.volley.Request.deliverError(Request.java:563)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:101)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.os.Handler.handleCallback(Handler.java:730)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.os.Looper.loop(Looper.java:137)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at android.app.ActivityThread.main(ActivityThread.java:5103)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at java.lang.reflect.Method.invokeNative(Native Method)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at java.lang.reflect.Method.invoke(Method.java:525)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-27 19:24:14.695: E/AndroidRuntime(3027):     at dalvik.system.NativeStart.main(Native Method)

Glassfish Server Log:

Advertência:   StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception
java.lang.NullPointerException
    at com.sun.common.util.logging.LoggingOutputStream$LoggingPrintStream.println(LoggingOutputStream.java:228)
    at org.apache.felix.gogo.runtime.threadio.ThreadPrintStream.println(ThreadPrintStream.java:205)
    at service.VendaService.realizarVenda(VendaService.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

Web service function:

@POST
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Path("realizarvenda")
    public Venda realizarVenda(@PathParam("Venda")JSONObject json) {
        System.out.println(json);
        Venda venda = new Venda();
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss-HH:ss").create();        
        VendaDAO vendDAO = new VendaDAO();
        venda = vendDAO.cadastrarMobile(gson.fromJson(json.toString(), Venda.class));
        return venda;

    }

Android upload function:

public static void enviarVenda() {

        JSONObject jsObject = new JSONObject();
        try {
            jsObject.put("Venda", vend);

            Log.i("JSONOBJECT ADD VENDA->", jsObject.toString());
        } catch (JSONException e) {
            Log.e("JSONException VENDA->", e.getLocalizedMessage());
        }

        url = "http://10.67.95.223:8080/BMSystem/webresources/venda/realizarvenda/";
        JsonObjectRequest app = new JsonObjectRequest(Request.Method.POST, url,
                jsObject, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.i("RESPOSTA DE VENDA->", response.toString());

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("ERROR->", error.getLocalizedMessage());
                    }
                });

        rq.add(app);

}

Change: Android logging

04-28 17:15:42.769: I/JSONOBJECT ADD VENDA->(1450): {"Venda":"model.Venda@52df4208"}
04-28 17:15:42.893: D/dalvikvm(1450): GC_FOR_ALLOC freed 1201K, 6% free 21710K/22968K, paused 3ms, total 3ms
04-28 17:15:42.929: I/dalvikvm(1450): threadid=1: stack overflow on call to Ljava/text/FieldPosition;.getField:I
04-28 17:15:42.929: I/dalvikvm(1450):   method requires 8+20+0=28 bytes, fp is 0x9ec43308 (8 left)
04-28 17:15:42.929: I/dalvikvm(1450):   expanding stack end (0x9ec43300 to 0x9ec43000)
04-28 17:15:42.929: I/dalvikvm(1450): Shrank stack (to 0x9ec43300, curFrame is 0x9ec43544)
04-28 17:15:42.929: D/AndroidRuntime(1450): Shutting down VM
04-28 17:15:42.929: W/dalvikvm(1450): threadid=1: thread exiting with uncaught exception (group=0xa4bb3648)
04-28 17:15:42.953: D/dalvikvm(1450): GC_FOR_ALLOC freed 1607K, 8% free 21786K/23504K, paused 4ms, total 4ms
04-28 17:15:42.953: E/AndroidRuntime(1450): FATAL EXCEPTION: main
04-28 17:15:42.953: E/AndroidRuntime(1450): java.lang.StackOverflowError
04-28 17:15:42.953: E/AndroidRuntime(1450):     at libcore.icu.NativeDecimalFormat$FieldPositionIterator.forFieldPosition(NativeDecimalFormat.java:518)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at libcore.icu.NativeDecimalFormat.formatLong(NativeDecimalFormat.java:252)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.DecimalFormat.format(DecimalFormat.java:684)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.NumberFormat.format(NumberFormat.java:299)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.DecimalFormat.format(DecimalFormat.java:702)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.SimpleDateFormat.appendNumber(SimpleDateFormat.java:794)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.SimpleDateFormat.append(SimpleDateFormat.java:601)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.SimpleDateFormat.formatImpl(SimpleDateFormat.java:562)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.SimpleDateFormat.format(SimpleDateFormat.java:827)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at java.text.DateFormat.format(DateFormat.java:307)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.DefaultDateTypeAdapter.serialize(DefaultDateTypeAdapter.java:72)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.DefaultDateTypeAdapter.serialize(DefaultDateTypeAdapter.java:35)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.TreeTypeAdapter.write(TreeTypeAdapter.java:70)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:892)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:892)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
04-28 17:15:42.953: E/AndroidRuntime(1450):     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$

I changed the send function also to:

public static void enviarVenda() throws JSONException {



        Gson gson = new GsonBuilder()
        .setDateFormat(
                "yyyy-MM-dd'T'HH:mm:ss-HH:ss")
        .create();
        url = "http://192.168.2.154:8080/BMSystem/webresources/venda/realizarvenda/";
        JsonObjectRequest app = new JsonObjectRequest(Request.Method.POST, url,
                new JSONObject(gson.toJson(vend)), new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.i("RESPOSTA DE VENDA->", response.toString());

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("ERROR->", error.getLocalizedMessage());
                    }
                });

        rq.add(app);

    }

Web Service

@POST
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Path("realizarvenda")
    public Venda realizarVenda(JSONObject json) {
        System.out.println(json);
        Venda venda = new Venda();
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss-HH:ss").create();        
        VendaDAO vendDAO = new VendaDAO();
        venda = vendDAO.cadastrarMobile(gson.fromJson(json.toString(), Venda.class));
        return venda;

    }
    
asked by anonymous 28.04.2015 / 21:19

0 answers