Làm cách nào để xác định xem một số mã (một serv-let hoặc một lớp đơn giản) đang chạy trên Google App Engine (Java) để người dùng có thể quyết định để sử dụng thư viện cụ thể của công cụ ứng dụng hay không? Có một số môi trường thời gian chạy đáng tin cậy ID cho điều đó?xác định xem mã có đang chạy trên thời gian chạy của ứng dụng (Java)
Trả lời
Bạn có thể kiểm tra com.google.appengine.runtime.version
tài sản:
String appEngineVersion = System.getProperty("com.google.appengine.runtime.version");
Nếu nó được thiết lập, nó App Engine.
Nhưng tôi sẽ xem xét sử dụng các mục tiêu xây dựng riêng biệt thay vào đó, để tránh chi phí thời gian chạy.
Cảm ơn rất nhiều cho câu trả lời. Tôi có 2 lớp con thực hiện riêng biệt cho 2 trường hợp và chúng khá nhỏ (200 dòng trong kích thước mã trong tổng số của cả hai) cần xây dựng riêng biệt, tôi giả sử. – nsegae
Như @Matthew Flaschen đã nói, có các thuộc tính hệ thống mà bạn có thể kiểm tra để xác định xem GAE có hiện diện hay không. This link cung cấp chi tiết.
Nếu bạn đi xuống tuyến đường này, ứng dụng của bạn cần phải được xây dựng để mã chính không phụ thuộc tĩnh vào các lớp GAE; nghĩa là không nhập hoặc tham chiếu khác tới các gói và lớp GAE trong mã (các tên lớp GAE riêng lẻ, vv trong các chuỗi ký tự String). Tất cả các phụ thuộc phải được tách biệt với mã được tải bằng cách sử dụng Class.forName(String)
SAU KHI bạn đã xác định GAE có hiện diện hay không.
này đại diện cho một chi phí không tầm thường:
- Bạn có lẽ sẽ kết thúc với một giao diện Adaptor thêm và (ít nhất) hai triển khai cho các trường hợp GAE và phi GAME.
- Bạn có các chi phí thời gian chạy (nhỏ) của việc tải động lớp học có liên quan khi khởi động và gọi qua giao diện Bộ điều hợp.
- Tệp JAR của bạn lớn hơn nhiều.
- Bây giờ bạn phải thử nghiệm trên hai nền tảng.
Mặt khác, bạn có lợi thế tiềm năng khi có một JAR hoạt động trong cả ngữ cảnh GAE và không phải GAE.
Có một cách khác để thực hiện việc này. Này được giải thích trong tài liệu hướng dẫn gaevfs về làm thế nào để viết di động Mã: http://code.google.com/p/gaevfs/wiki/ApplicationPortability
quan tâm đến bạn là dòng sau:
boolean isGoogleAppEngine = getServletContext().getServerInfo().contains("Google");
Như đã giải thích here bạn có thể kiểm tra các tài sản sau đây:
String environment = System.getProperty(
"com.google.appengine.runtime.environment")
environment
là "Sản xuất" khi chạy trên App Engine và "Phát triển" khi chạy trong máy chủ phát triển.
tương tự như những gì @Reza viết, nhưng một chút bụi:
sử dụng SystemProperty.environment.value()
để có được "Sản" khi chạy trên App Engine, và "Phát triển" khi chạy trong máy chủ phát triển.
tôi thấy không có giải pháp kiểu an ở đây để ở đây là:
if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
// The app is running on App Engine...
}
- 1. Thời gian chạy chương trình đang chạy
- 2. Xác định xem ứng dụng có đang chạy trong xanh hay không
- 3. Cách xác định xem ứng dụng của bạn có đang chạy trên Máy chủ phát triển Python cục bộ không?
- 4. Xác định xem chương trình có đang chạy trên Máy để bàn Từ xa
- 5. Xcode/iOS: Cách xác định xem mã có đang chạy trong DEBUG/RELEASE build không?
- 6. Cách xác định nền tảng nào ứng dụng hiện tại đang chạy trên LibGDX?
- 7. Xác định xem ứng dụng có đang chạy ở nền trước khi nhận được thông báo trên iOS
- 8. Lỗi thời gian chạy JavaScript: '$' không được xác định
- 9. Xác định các thông số mẫu trong thời gian chạy
- 10. Lập trình xác định phiên bản thời gian chạy Mono
- 11. thời gian chạy xác định loại cho C++
- 12. Xác định hệ điều hành trong thời gian chạy
- 13. Làm cách nào để xác định từ tập lệnh PowerShell trong thời gian chạy máy chủ đang chạy?
- 14. Kiểm tra xem hằng số có được xác định tại thời gian chạy theo Obj-C
- 15. Xác định Bảng điều khiển WPF tại thời gian chạy
- 16. Ứng dụng C# có theo dõi thời gian chạy của ứng dụng C# không?
- 17. Thay đổi Cài đặt ứng dụng trong thời gian chạy
- 18. ClassNotFoundException trong thời gian chạy nhưng ứng dụng biên dịch
- 19. Kiểm tra xem mã đang chạy trên GPU hay CPU
- 20. Có cách nào để xác định xem ứng dụng Android có đang chạy toàn màn hình không?
- 21. Làm cách nào để biết Máy chủ thời gian chạy nào hiện đang chạy mã của tôi?
- 22. Có cách nào để biết thời gian chạy cấp API mà thiết bị Android đang chạy?
- 23. Xác định loại chung loại thời gian chạy
- 24. Mảng có kích thước xác định tại thời gian chạy, có hợp lệ trong C++ không?
- 25. có thể kích thước của mảng được xác định tại thời gian chạy trong c?
- 26. Lỗi thời gian chạy Java lạ - currency.data
- 27. Có cách nào để xác định xem mã GWT có đang chạy trong chế độ phát triển không?
- 28. Java - Làm thế nào tôi có thể xác định phiên bản Mac OS X đang chạy với mã?
- 29. xcode hết thời gian chờ đợi ứng dụng khởi chạy
- 30. Xác định khi chạy trên máy ảo
có thể trùng lặp của [Làm thế nào để kiểm tra trong Java App Engine nếu chúng ta trên máy trạm phát triển] (http://stackoverflow.com/ câu hỏi/1574637/how-to-check-in-java-app-engine-nếu-chúng tôi-đang-trên-phát triển-máy trạm) –