Webservices REST on Android with App Engine, Restlet and Objectify

156 views
Skip to first unread message

Christophe DA COSTA

unread,
Jun 27, 2014, 3:49:20 PM6/27/14
to google-a...@googlegroups.com

Hello,

I use Webservices Rest on Android Apply, When I call a Webservice, often I have an error:

06-26 20:05:27.358: W/dalvikvm(8672): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lorg/codehaus/jackson/map/ext/JodaSerializers;
06-26 20:05:27.358: I/OffreController(8672): getAllOffres failed ! Internal Server Error
06-26 20:05:27.358: W/System.err(8672): Internal Server Error (500) – The server encountered an unexpected condition which prevented it from fulfilling the request
06-26 20:05:27.368: W/System.err(8672): at org.restlet.resource.ClientResource.toObject(ClientResource.java:1456)
06-26 20:05:27.368: W/System.err(8672): at org.restlet.resource.ClientResource$1.invoke(ClientResource.java:1610)
06-26 20:05:27.368: W/System.err(8672): at $Proxy3.getAllOffre(Native Method)
06-26 20:05:27.368: W/System.err(8672): at com.example.hal.model.OffreController.getAllOffre(OffreController.java:45)
06-26 20:05:27.368: W/System.err(8672): at com.sromku.simple.fb.example.fragments.OffreFragment.getAllOffre(OffreFragment.java:114)
06-26 20:05:27.368: W/System.err(8672): at com.sromku.simple.fb.example.fragments.OffreFragment.onActivityCreated(OffreFragment.java:97)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
06-26 20:05:27.368: W/System.err(8672): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
06-26 20:05:27.368: W/System.err(8672): at android.view.View.measure(View.java:16497)
06-26 20:05:27.368: W/System.err(8672): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
06-26 20:05:27.368: W/System.err(8672): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-26 20:05:27.368: W/System.err(8672): at android.view.View.measure(View.java:16497)
06-26 20:05:27.368: W/System.err(8672): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
06-26 20:05:27.368: W/System.err(8672): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
06-26 20:05:27.368: W/System.err(8672): at android.view.View.measure(View.java:16497)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
06-26 20:05:27.378: W/System.err(8672): at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
06-26 20:05:27.378: W/System.err(8672): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
06-26 20:05:27.378: W/System.err(8672): at android.view.View.measure(View.java:16497)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
06-26 20:05:27.378: W/System.err(8672): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
06-26 20:05:27.378: W/System.err(8672): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
06-26 20:05:27.378: W/System.err(8672): at android.view.Choreographer.doCallbacks(Choreographer.java:574)
06-26 20:05:27.378: W/System.err(8672): at android.view.Choreographer.doFrame(Choreographer.java:544)
06-26 20:05:27.378: W/System.err(8672): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
06-26 20:05:27.378: W/System.err(8672): at android.os.Handler.handleCallback(Handler.java:733)
06-26 20:05:27.378: W/System.err(8672): at android.os.Handler.dispatchMessage(Handler.java:95)
06-26 20:05:27.378: W/System.err(8672): at android.os.Looper.loop(Looper.java:136)
06-26 20:05:27.378: W/System.err(8672): at android.app.ActivityThread.main(ActivityThread.java:5001)
06-26 20:05:27.378: W/System.err(8672): at java.lang.reflect.Method.invokeNative(Native Method)
06-26 20:05:27.378: W/System.err(8672): at java.lang.reflect.Method.invoke(Method.java:515)
06-26 20:05:27.378: W/System.err(8672): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-26 20:05:27.378: W/System.err(8672): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-26 20:05:27.378: W/System.err(8672): at dalvik.system.NativeStart.main(Native Method)
06-26 20:05:27.378: W/System.err(8672): Caused by: android.os.NetworkOnMainThreadException
06-26 20:05:27.388: W/System.err(8672): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
06-26 20:05:27.388: W/System.err(8672): at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163)
06-26 20:05:27.388: W/System.err(8672): at libcore.io.IoBridge.recvfrom(IoBridge.java:506)
06-26 20:05:27.388: W/System.err(8672): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
06-26 20:05:27.388: W/System.err(8672): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
06-26 20:05:27.388: W/System.err(8672): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
06-26 20:05:27.388: W/System.err(8672): at java.io.InputStream.read(InputStream.java:162)
06-26 20:05:27.388: W/System.err(8672): at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142)
06-26 20:05:27.388: W/System.err(8672): at java.io.BufferedInputStream.read(BufferedInputStream.java:288)
06-26 20:05:27.388: W/System.err(8672): at java.io.PushbackInputStream.read(PushbackInputStream.java:185)
06-26 20:05:27.388: W/System.err(8672): at org.restlet.engine.http.io.ChunkedInputStream.read(ChunkedInputStream.java:198)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.impl.ByteSourceBootstrapper.ensureLoaded(ByteSourceBootstrapper.java:339)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.impl.ByteSourceBootstrapper.detectEncoding(ByteSourceBootstrapper.java:116)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.impl.ByteSourceBootstrapper.constructParser(ByteSourceBootstrapper.java:205)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.JsonFactory._createJsonParser(JsonFactory.java:503)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.JsonFactory.createJsonParser(JsonFactory.java:365)
06-26 20:05:27.388: W/System.err(8672): at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:927)
06-26 20:05:27.388: W/System.err(8672): at org.restlet.ext.jackson.JacksonRepresentation.getObject(JacksonRepresentation.java:136)
06-26 20:05:27.388: W/System.err(8672): at org.restlet.ext.jackson.JacksonConverter.toObject(JacksonConverter.java:160)
06-26 20:05:27.388: W/System.err(8672): at org.restlet.service.ConverterService.toObject(ConverterService.java:156)
06-26 20:05:27.388: W/System.err(8672): at org.restlet.resource.ClientResource.toObject(ClientResource.java:1454)
06-26 20:05:27.388: W/System.err(8672): … 44 more

But in the AppEngine's Logs I haven't error:

2014-06-26 20:05:27.423 /rest/offre 200 219ms 1kb Restlet-Framework/2.0rc4 module=default version=2
37.163.197.22 – - [26/Jun/2014:11:05:27 -0700] “GET /rest/offre HTTP/1.1″ 200 1957 – “Restlet-Framework/2.0rc4″ “Halrest25.appspot.com” ms=220 cpu_ms=108 cpm_usd=0.000219 app_engine_release=1.9.6 trace_id=a1cf019eb272b48ec0d18ce8f085b6be instance=00c61b117c54687cc46ad537b4c3e2625f9a06


Can you help me?


Thanks.

Vinny P

unread,
Jul 9, 2014, 1:35:38 AM7/9/14
to google-a...@googlegroups.com
On Fri, Jun 27, 2014 at 2:49 PM, Christophe DA COSTA <toto...@gmail.com> wrote:
I use Webservices Rest on Android Apply, When I call a Webservice, often I have an error:
06-26 20:05:27.358: W/dalvikvm(8672): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lorg/codehaus/jackson/map/ext/JodaSerializers;
But in the AppEngine's Logs I haven't error:

2014-06-26 20:05:27.423 /rest/offre 200 219ms 1kb 

Can you help me?


This doesn't seem to be an App Engine problem. It looks like your Android application isn't able to find a library. If you're building your Android app in Eclipse, have you made sure that the Jackson libraries are being exported? Go to the Build Path section, and make sure the checkbox for exporting libraries is checked.
 
 
-----------------
-Vinny P
Technology & Media Consultant
Chicago, IL

App Engine Code Samples: http://www.learntogoogleit.com

Christophe DA COSTA

unread,
Jul 22, 2014, 8:18:49 AM7/22/14
to google-a...@googlegroups.com
Thanks you for your answer.

I checked all library, but, I have the same problem. 
Strangely, this problem doesn't always appears And only to star the apply  


Christophe DA COSTA

unread,
Jul 22, 2014, 10:59:54 AM7/22/14
to google-a...@googlegroups.com



I post here my code:



package com.sromku.simple.fb.example.fragments;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;




import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;

import com.example.hal.model.Offre;
import com.example.hal.model.OffreController;
import com.sromku.simple.fb.example.OffreAddActivity;
import com.sromku.simple.fb.example.R;


import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;


public class OffreFragment extends ListFragment implements OnRefreshListener{

private List<Offre> listsOffre = null;
private List<String> listsName = null;
private ArrayAdapter<String> offreArray;

private PullToRefreshLayout mPullToRefreshLayout;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
  View view =inflater.inflate(R.layout.fragment_offre, container, false);

  
        ViewGroup viewGroup = (ViewGroup) view;
        mPullToRefreshLayout = new PullToRefreshLayout(viewGroup.getContext());

        ActionBarPullToRefresh.from(getActivity())
                .insertLayoutInto(viewGroup)
                .theseChildrenArePullable(android.R.id.list, android.R.id.empty)
                .listener(this)
                .setup(mPullToRefreshLayout);
return view;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(offreArray==null){
getAllOffre();
offreArray= new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, listsName);
setListAdapter(offreArray);
  }
}
    
private void getAllOffre() {

OffreController list = new OffreController();

if(listsName==null)
listsName  = new ArrayList<String>();
try {
listsOffre = list.getAllOffre();
} catch (Exception e) {
e.printStackTrace();
}
if (listsOffre != null) {
for (Object o : listsOffre) {
Offre u=(Offre) o;
if (u != null)
listsName.add(u.getTitre() + "\n" + u.getTexte());
}
}
}
private String[] getStringsOffre() {

OffreController list = new OffreController();

int i=0;
try {
listsOffre = list.getAllOffre();
} catch (Exception e) {
e.printStackTrace();
}
String[] stringsName ={};
if (listsOffre != null) {

stringsName = new String[listsOffre.size()];
for (Object o : listsOffre) {
Offre u=(Offre) o;
if (u != null)
stringsName[i]=u.getTitre() + "\n" + u.getTexte();
i++;
             }

}
return stringsName;
}
final void newOffre(){

 startActivity(new Intent(getActivity(), OffreAddActivity.class));
    }


@Override
public void onRefreshStarted(View view) {
 new AsyncTask<Void, Void, Void>() {

             @Override
             protected Void doInBackground(Void... params) {
          
                     getAllOffre();
                     
                 return null;
             }

             @Override
             protected void onPostExecute(Void result) {
                 super.onPostExecute(result);
           
                 
                 offreArray.notifyDataSetChanged();
                 mPullToRefreshLayout.setRefreshComplete();

             }
         }.execute();
}

}

 

Vinny P

unread,
Jul 23, 2014, 1:49:35 AM7/23/14
to google-a...@googlegroups.com
On Tue, Jul 22, 2014 at 7:18 AM, Christophe DA COSTA <toto...@gmail.com> wrote:
Thanks you for your answer.
I checked all library, but, I have the same problem. 
Strangely, this problem doesn't always appears And only to star the apply 


Does this problem appear on both the emulator and Android device? When this problem occurs, does it occur on the same piece of data or data that are similar in some way? Do the JARs in your build path contain the class JodaSerializers?


On Tue, Jul 22, 2014 at 9:59 AM, Christophe DA COSTA <toto...@gmail.com> wrote: 
I post here my code:


I'm writing this from a tablet right now so I don't have access to Eclipse to test out your code. However, there doesn't seem to be anything immediately wrong with your code. You also might want to crosspost this question to an Android forum. 
Reply all
Reply to author
Forward
0 new messages