2013-05-30 8 views
7

Sono molto nuovo allo sviluppo di Google App Engine (GAE) e Glassware (per Google Glass).Il pacchetto API 'urlfetch' o chiamare 'Fetch()' non è stato trovato

ho configurato progetto mirror-quickstart-java su Netbeans e Apache tomcat anche ho avuto successo nella gestione del progetto, ma sto avendo difficoltà avanti.

Il mio requisito è, non voglio utilizzare il motore di app di google per lo sviluppo della mia vetreria poiché voglio utilizzare poche API di terze parti. Inoltre, il motore dell'app non supporta le apis javax.imageio e BufferedImage.

Ho seguenti domande in mente

  1. IS è obbligatorio utilizzare Google app-engine per mirror-QuickStart-java/sviluppo vetro?
  2. In caso contrario, ricevo il seguente errore dopo il passaggio "Consenti accesso" durante lo scambio di token di accesso.
message The API package 'urlfetch' or call 'Fetch()' was not found. 

description The server encountered an internal error that prevented it from fulfilling this request. 

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'urlfetch' or call 'Fetch()' was not found. 
    com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:100) 
    com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:38) 
    com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:75) 
    com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980) 
    com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed(TokenRequest.java:299) 
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:175) 
    com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeTokenRequest.execute(GoogleAuthorizationCodeTokenRequest.java:78) 
    com.google.glassware.AuthServlet.doGet(AuthServlet.java:56) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

risposta

5

Spostare il progetto di avvio rapido da App Engine in un altro contenitore J2EE è piuttosto semplice, ma richiede alcune modifiche al codice:

  1. Sostituire le istanze di UrlFetchTransport con un altro come NetHttpTransport. Questo avrà un impatto AuthUtil.java e MirrorClient.java
  2. Sostituire ListableAppEngineCredentialStore.java con una nuova implementazione di CredentialStore che funziona con qualsiasi livello di persistenza che si preferisce (Hibernate, SQLite, ecc.).

Ci sono anche alcune modifiche che è necessario apportare alla gestione delle dipendenze e agli script di compilazione, ma ci si trova da soli poiché ciò dipende molto da come si pianifica di eseguirlo.

1

Non è necessario per utilizzare AppEngine per il vetro. L'unico requisito è che le risposte all'abbonamento ti vengano inviate usando HTTPS, quindi dovrai assicurarti che il tuo server sia configurato correttamente per gestirlo.

Il pacchetto urlfetch è specifico per appengine. Dovresti assicurarti che le librerie appengine siano rimosse dal tuo progetto e qualsiasi codice che fa riferimento a questo sia riscritto per usare le librerie standard java.net. Poiché questo fa parte dell'autenticazione, potresti voler utilizzare un metodo OAuth2 alternativo come Google+ Sign-In.