6

La conversione seguente sarebbe valida per la conversione da servlet Java a endpoint cloud google app-engine?convertire lo schema servlet in schema endpoint app-engine

DA

public void doPost(HttpServletRequest req, HttpServletResponse res) 
throws ServletException, IOException { … } 

PER

@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST) 
public void saveBlobKey(HttpServletRequest req) throws IOException { … } 

CONTESTO:

Sto cercando di utilizzare endpoint per elaborare blobstore callback.

Rif: https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App

PROBLEMA:

La grande hickup ecco che le due righe sembrano richiedere la classe HttpServletRequest e non so se posso passarlo a punto finale.

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req); 

EDIT:

Ho cercato un sacco di percorsi per risolvere questo problema. La mia ultima è combining blob servlet with endpoint api. Ancora non sono in grado di far funzionare il codice. Quindi la generosità va a chiunque fornisca una soluzione o informazioni che effettivamente conducano a una soluzione .

+0

Sono passati molti anni, sei riuscito a trovare una soluzione? – Micro

risposta

3

Attualmente non è possibile utilizzare gli endpoint come callback nel blobstore blobstoreService.createUploadUrl. Vedi questo related answer. C'è una richiesta di funzionalità aperta per supportare mediaUpload, che probabilmente fornisce funzionalità simili a ciò che desideri. Sentiti libero di parteciparlo per mostrare supporto e ricevere aggiornamenti automatici.

Ciò che raccomando sarebbe una delle due alternative possibili, a seconda della quantità di dati che si sta tentando di caricare.

Se si stanno caricando piccole quantità di dati blob, che rientrerebbero nell'archivio dati, utilizzare il tipo ShortBlob (fino a 500 byte) o Blob (fino a 1 MB) nella classe di entità Endpoint. Gli endpoint gestiscono la serializzazione sul back-end e prevedono (e rimandano) stringhe con codifica Base64 tramite le librerie client. Questo è un approccio molto semplice e diretto.

Se si desidera fornire BLOB di dimensioni superiori a 1 MB, per ora, utilizzare Google Cloud Storage JSON API. Questa API utilizza la stessa libreria client come Endpoint, quindi non è necessario raggruppare un'altra libreria con l'applicazione. This page ha un esempio di inserimento di un blob in Google Cloud Storage con la libreria client Java.

+0

Il problema relativo al supporto degli endpoint per mediaUpload ha ora quasi due anni e mezzo. Non è successo niente. Questo è tipico per problemi di AppEngine. Mi chiedo quando Google si libererà di AppEngine in una pulizia di primavera o autunno? – rakensi

Problemi correlati