2013-02-28 15 views
11

Tôi đã cố gắng tìm cách triển khai ứng dụng Dropwizard trên Google AppEngine, nhưng tôi chưa tìm thấy bất kỳ thứ gì cho đến thời điểm này.Triển khai Dropwizard trên Google AppEngine

Đánh giá theo điều này question (và answer) Tôi nghĩ điều đó có thể không thực hiện được. Tôi muốn chắc chắn về điều đó và nếu nó thì hoạt động, tôi muốn tìm hiểu cách thực hiện.

Có một ngã ba dropwizard được gọi là warwizard cho phép bạn tạo tệp chiến tranh từ mã dropwizard của bạn, nhưng nó đã không được xúc động trong hơn 6 tháng, có khả năng gây khó khăn khi sử dụng tài liệu dropwizard.

+0

Tôi nghĩ rằng đây là có thể, với điều kiện là chỉ những Gae lớp thân thiện có liên quan. – xybrek

+0

Tôi vẫn đang cố gắng xây dựng warwizard, và cần phải xác minh điều này, nhưng một lần nữa, tôi không thấy bất cứ điều gì sẽ không làm được điều này, nhìn vào những thay đổi mã nhất sẽ là 'cầu cảng' trên lõi, và cũng db nó cần được sửa đổi cho kho dữ liệu GAE – xybrek

Trả lời

11

Dropwizard chỉ là Jersey + Jackson + Jetty được nhóm lại với nhau một cách độc đáo. Cầu cảng và Máy ứng dụng sẽ không hoạt động (nghĩa là, App Engine is already running Jetty, vì vậy nó không muốn ứng dụng tự cung cấp).

Bạn đang có lẽ tốt nhất bằng cách sử dụng Jersey và Jackson không Dropwizard buộc chúng lại với nhau: 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

Bạn có thể tuy nhiên, chạy Dropwizard trên Google Compute Engine. Đó là cơ bản chỉ là máy ảo Linux được cung cấp bởi Google, với quyền truy cập vào các API của họ nếu cần.

Tôi manged để có được dụ Dropwizard của tôi làm việc bằng cách làm như sau trên GCE:

Cài đặt Java

sudo apt-get install java7-runtime-headless 

mở cổng tường lửa:

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

Sao chép tập tin để GCE

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

Chạy ứng dụng của bạn

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

EDIT: đó cũng là một sự thay thế được gọi là wiztowar https://github.com/twilio/wiztowar mà hỗ trợ DW 0.6.2 chỉ.

0

Tôi đã cố gắng giải quyết vấn đề này trong hai tháng qua. Dưới đây là những phát hiện của tôi:

1- Có, bạn có thể triển khai Dropwizard dưới dạng tệp WAR. Bạn cần phải sử dụng một số hacks như Wizard in a box hoặc WizToWar

2- Không! Bạn không thể triển khai tệp WAR đó trên môi trường tiêu chuẩn AppEngine.

Tại sao? Vấn đề chính là AppEngine đang sử dụng servlet-api v2.5 (đã hơn 10 năm) và không có kế hoạch nâng cấp lên servlet-api v3 hoặc cao hơn. Dropwizard mặt khác yêu cầu servlet-api v3 hoặc cao hơn.

NHƯNG chờ đợi!có một tùy chọn

Bạn có thể triển khai Dropwizard trên App Engine Flexible Environment

App Engine Flex vẫn đang trong phiên bản beta, nhưng tôi đã nghe nó sẽ có sẵn để sử dụng công cộng trong quý 1 năm 2017. Nếu bạn muốn sử dụng nó bây giờ , bạn phải yêu cầu được kích hoạt cho bạn.

Làm thế nào để bạn triển khai trên App Engine Flex?

-> Tôi đã đặt tất cả các bước trên làm điều đó trong một bài đăng blog ở đây: Deploying Dropwizard on App Engine Flex

+0

Bạn không cần phải yêu cầu sử dụng flex env ngày hôm nay, nó có sẵn cho công chúng (như là một phiên bản beta, đúng). AFAIK bạn chỉ cần điền vào biểu mẫu nếu bạn muốn sử dụng nó với tên miền tùy chỉnh (từ https://cloud.google.com/appengine/docs/flexible/python/upgrading) –

+0

Thật tuyệt vời! Cảm ơn bạn đã cập nhật: +1: –