12

我一直在尝试找到一种在 Google AppEngine 上部署Dropwizard应用程序的方法,但到目前为止我还没有找到任何东西。

从这个问题(和答案)来看,我认为这可能是不可能的。我想确定这一点,如果它确实有效,我想学习如何。

有一个名为warwizard的 dropwizard 分支,它显然可以让您从 dropwizard 代码创建 war 文件,但它已经有 6 个多月没有被触及,这可能会使使用 dropwizard 文档变得困难。

4

3 回答 3

11

Dropwizard 只是将 Jersey+Jackson+Jetty 很好地捆绑在一起。Jetty 和 App Engine 无法相处(也就是说,App Engine 已经在运行 Jetty,因此它不希望应用程序提供自己的)。

您最好使用 Jersey 和 Jackson,而不需要 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

于 2013-03-01T01:42:53.923 回答
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。

于 2014-01-15T04:44:42.017 回答
0

在过去的两个月里,我一直在努力解决这个问题。以下是我的发现:

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

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

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

可是等等!还有另一种选择

您可以在App Engine 柔性环境中部署 Dropwizard

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

您如何在 App Engine Flex 上进行部署?

-> 我已经将所有步骤都放在了博客文章中: 在 App Engine Flex 上部署 Dropwizard

于 2017-01-12T19:46:45.213 回答