在Google AppEngine上部署Dropwizard

时间:2013-02-28 20:08:40

标签: google-app-engine dropwizard

我一直在努力寻找在Google AppEngine上部署Dropwizard应用的方法,但到目前为止我还没有找到任何内容。

根据此question(和answer)来判断,我认为这可能是不可能的。 我想确定一下,如果 工作,我想学习如何。

有一个名为warwizard的dropwizard fork,它显然可以让你从你的dropwizard代码创建war文件,但它已经超过6个月未被触及,这可能会让你很难使用dropwizard文档

3 个答案:

答案 0 :(得分:11)

Dropwizard只是泽西+杰克逊+杰蒂很好地捆绑在一起。 Jetty和App Engine不会相处(即App Engine is already running Jetty,所以它不希望应用程序提供它自己的。)

你可能最好不要使用泽西和杰克逊没有Dropwizard将它们捆绑在一起: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

答案 1 :(得分:7)

但是,您可以在Google Compute Engine上运行Dropwizard。这基本上只是Google提供的Linux VM,如果需要可以访问他们的API。

我通过在GCE上执行以下操作来使我的Dropwizard实例正常工作:

安装Java

sudo apt-get install java7-runtime-headless 

打开防火墙端口:

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

将文件复制到GCE

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

运行您的应用

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

编辑:还有另一个名为wiztowar https://github.com/twilio/wiztowar的替代方案,它仅支持DW 0.6.2。

答案 2 :(得分:0)

过去两个月我一直试图解决这个问题。以下是我的发现:

1- 是的,您可以将Dropwizard部署为WAR文件。您需要使用某些 hacks ,例如Wizard in a boxWizToWar

2- 不!您无法在AppEngine标准环境中部署该WAR文件。

为什么呢? 主要问题是AppEngine正在使用servlet-api v2.5(已经超过10年了!)并且没有计划升级到servlet-api v3或更高版本。另一方面,Dropwizard需要servlet-api v3或更高版本。

等等!还有另一种选择

您可以在App Engine Flexible Environment

上部署Dropwizard

App Engine Flex仍处于测试阶段,但我听说它将于2017年第一季度供公众使用。如果您现在想要使用它,您必须要求为您启用。

如何在App Engine Flex上部署?

- >我在这里的博客文章中已经完成了所有这些步骤: Deploying Dropwizard on App Engine Flex