2013-02-28 16 views
11

Ich habe versucht, einen Weg zu finden, eine Dropwizard App auf Google AppEngine bereitzustellen, aber ich habe noch nichts gefunden.Bereitstellen von Dropwizard auf Google AppEngine

Gemessen daran question (und answer) Ich denke, dass es nicht möglich sein könnte. Ich möchte sicher sein, und wenn es funktioniert funktioniert, würde ich gerne lernen, wie.

Es gibt eine Dropwizard-Gabel mit der Bezeichnung warwizard, mit der Sie anscheinend Kriegsdateien aus Ihrem Dropwizard-Code erstellen können, aber seit über 6 Monaten nicht mehr berührt, was die Arbeit mit den Dropwizard-Dokumenten erschweren würde.

+0

Ich denke, das ist möglich, vorausgesetzt, dass nur diejenigen GAE befreundeten Klassen beteiligt sind. – xybrek

+0

Ich versuche immer noch, einen Warwizard zu bauen, und muss dies überprüfen, aber ich sehe nichts, was das nicht möglich machen würde, wenn ich mir den Code anschaue, den die meisten Veränderungen auf dem 'Jetty' im Kern haben würden auch die db sollte es für GAE-Datenspeicher geändert werden – xybrek

Antwort

11

Dropwizard ist nur Jersey + Jackson + Jetty gut zusammen gebündelt. Jetty und App Engine kommen nicht miteinander aus (also App Engine is already running Jetty, also möchte die Anwendung nicht ihre eigenen bereitstellen).

Sie sind wahrscheinlich am besten dran mit Jersey und Jackson ohne Dropwizard sie zusammen binden: http://blog.iparissa.com/googles-app-engine-java/google-app-engine-jax-rs-jersey/ & http://www.cowtowncoder.com/blog/archives/2009/11/entry_338.html

7

Sie kann jedoch laufen Dropwizard auf Google Compute Engine. Das sind im Grunde nur Linux-VMs von Google, mit Zugriff auf ihre APIs bei Bedarf.

ich manged meine Dropwizard Instanz erhalten arbeiten an GCE indem Sie folgendermaßen vorgehen:

Java installieren

sudo apt-get install java7-runtime-headless 

öffnen Firewall-Ports:

gcutil addfirewall rest --description="http" --allowed="tcp:8080 
gcutil addfirewall admin --description="admin" --allowed="tcp:8081" 

Kopieren Sie die Datei auf GCE

gcutil --project={project-id} push {instance-name} {local-file} {remote-target-path} 

Führen Sie Ihre App

java -jar your-app.jar server your-config.yml 

EDIT: Es gibt auch eine andere Alternative wiztowar https://github.com/twilio/wiztowar genannt, die nur 0.6.2 DW unterstützt.

0

Ich habe versucht, dieses Problem in den letzten zwei Monaten zu lösen. Hier meine Ergebnisse:

1- Ja, Sie können Dropwizard als WAR-Datei bereitstellen. Sie müssen einige Hacks wie Wizard in a box oder WizToWar

2- Nein verwenden! Sie können diese WAR-Datei nicht in der AppEngine-Standardumgebung bereitstellen.

Warum? Das Hauptproblem ist, dass AppEngine Servlet-api v2.5 verwendet (das älter als 10 Jahre ist!) Und keine Aktualisierung auf servlet-api v3 oder höher plant. Dropwizard benötigt dagegen servlet-api v3 oder höher.

ABER warte!Es gibt eine andere Option

können Sie Dropwizard auf App Engine Flexible Environment

App Engine Flex implementieren immer noch in der Betaphase, aber ich habe gehört, dass es für die öffentliche Nutzung im 1. Quartal verfügbar sein wird 2017. Wenn Sie es benutzen wollen jetzt Du musst darum bitten, dass das für dich aktiviert wird.

Wie implementieren Sie auf App Engine Flex?

-> Ich habe alle Schritte setzen, dass hier in einem Blog-Post auf dem Tun: Deploying Dropwizard on App Engine Flex

+0

Sie müssen nicht fragen, um den flex env heute zu verwenden, ist es für die Öffentlichkeit verfügbar (als Beta-Version, wahr). AFAIK Sie müssen nur ein Formular ausfüllen, wenn Sie es mit einer benutzerdefinierten Domain verwenden möchten (https://cloud.google.com/appengine/docs/flexible/python/upgrading) –

+0

Das ist großartig! Danke für das Update: +1: –

Verwandte Themen