我一直在努力寻找在Google AppEngine上部署Dropwizard应用的方法,但到目前为止我还没有找到任何内容。
根据此question(和answer)来判断,我认为这可能是不可能的。 我想确定一下,如果 工作,我想学习如何。
有一个名为warwizard的dropwizard fork,它显然可以让你从你的dropwizard代码创建war文件,但它已经超过6个月未被触及,这可能会让你很难使用dropwizard文档
答案 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 box或WizToWar
2- 不!您无法在AppEngine标准环境中部署该WAR文件。
为什么呢? 主要问题是AppEngine正在使用servlet-api v2.5(已经超过10年了!)并且没有计划升级到servlet-api v3或更高版本。另一方面,Dropwizard需要servlet-api v3或更高版本。
等等!还有另一种选择
您可以在App Engine Flexible Environment
上部署DropwizardApp Engine Flex仍处于测试阶段,但我听说它将于2017年第一季度供公众使用。如果您现在想要使用它,您必须要求为您启用。
如何在App Engine Flex上部署?
- >我在这里的博客文章中已经完成了所有这些步骤: Deploying Dropwizard on App Engine Flex