2012-07-11 25 views
7

Có bất kỳ ngăn xếp quản lý ứng dụng tích hợp tốt nào cho phép xây dựng, triển khai và cập nhật các ứng dụng Java không phải là .war chạy trên máy chủ không? Ví dụ, người tiêu dùng tin nhắn là máy chủ (nhưng không phải máy chủ web và không có Servlets), hoặc thực thi .jar s với Jetty được nhúng?Triển khai các ứng dụng Java Server Không phải .wars

Xây dựng và triển khai .war s khá đơn giản: Maven có nguyên mẫu chiến tranh, Jenkins có một đống plugin cho việc triển khai .war file đến các máy chủ ứng dụng khác nhau, hầu hết trong số đó chấp nhận việc tải lên các ứng dụng web mới khi chạy. Các công cụ như Elastic Beanstalk làm cho quá trình này trở nên dễ dàng hơn, liên kết trong việc quản lý môi trường máy chủ.

Ngược lại việc triển khai thực thi .jar s có vẻ như phát minh lại bánh xe. Người ta cần phải sắp xếp cách tốt nhất để tô bóng các phụ thuộc và tạo một vật thể thực thi với rất nhiều plugin Maven, gửi vật phẩm này ở đâu đó, sau đó tìm cách cài đặt nó trên máy chủ đích và thay thế/nâng cấp nó nếu cần (gói Debian sẽ là một cách để làm điều này). Tất cả điều này dường như rất 'thủ công' đối với tôi, đến mức có vẻ thuận lợi khi triển khai ứng dụng dưới dạng .war s đến máy chủ ứng dụng, ngay cả khi chúng không phù hợp với môi trường như vậy, chỉ để bạn có được lợi ích của công cụ hỗ trợ.

+0

cho người tiêu dùng tin nhắn, liệu MessageDriven EJBs có phù hợp không? Những thứ đó có thể được xuất bản lên máy chủ ứng dụng dưới dạng JAR. – wrschneider

+0

Họ cũng có thể được - tiếc là tôi đang ở một khởi động nhỏ, những người xem xét bất cứ điều gì "nặng" là công việc của Satan. –

Trả lời

4

Bạn có thể thực hiện điều này bằng cách triển khai các ứng dụng của bạn vào một thùng chứa osgi.

Bạn có thể móc vào vòng đời osgi để chạy ứng dụng của bạn khi gói osgi bắt đầu. Sau đó, bạn có thể bắt đầu và dừng vùng chứa từ xa (nếu vùng chứa hỗ trợ điều đó).

Ứng dụng của bạn có thể xác định phụ thuộc của chúng như là một phần của bản trình bày osgi - nhưng các lọ tô bóng bằng cách sử dụng plugin bóng không khó khi sử dụng maven và tôi nghĩ sẽ dễ quản lý hơn là xử lý hàng trăm lọ trong vùng chứa của bạn.

This question nói về việc triển khai liên tục các gói osgi bằng jenkins.

Cách thay thế (và tiêu chuẩn hơn) là viết kịch bản tự động triển khai - có thể sử dụng các công cụ được xây dựng nhằm mục đích như puppet hoặc chef. Có một maven plugin cho con rối cho phép bạn trích xuất hiện vật từ một repo maven để sử dụng trong các kịch bản con rối của bạn.

Chạy con rối hoặc đầu bếp từ jenkins là tầm thường và nếu bạn muốn, bạn có thể cung cấp quyền truy cập vào triển khai xây dựng cho các nhân viên phi kỹ thuật, để cho phép họ triển khai xây dựng mới cho môi trường chỉ với một cú nhấp chuột.

Giống như @bagheera đề xuất xây dựng các ứng dụng của bạn và bắt đầu chúng như các dịch vụ là một cách tốt để đi và giảm sự phức tạp của các tập lệnh triển khai của bạn.

+0

Cảm ơn câu trả lời - Tôi sẽ xem xét OSGi.Liên quan đến việc viết kịch bản, đây thường là cách tiếp cận mà tôi đã hy vọng tránh, nhưng có vẻ như điều đó không thể thực hiện được. –

+0

Nếu bạn ghép cặp chữ viết với đề xuất rpm thì tập lệnh rất đơn giản 1.) tải xuống rpm từ repo maven 2.) cài đặt rpm. Điều này [slideshow] (http://www.slideshare.net/actionjackx/automated-java-deployments-with-rpm) cho thấy các script trở nên đơn giản như thế nào sau khi đi với rpms - nó sử dụng các ứng dụng web vì nó là ví dụ nhưng các jars chỉ là hợp lệ . – plasma147

3

Dường như bạn đang tìm kiếm một người quản lý phụ thuộc để xây dựng bình thực thi khép kín của bạn và trình quản lý gói để triển khai. Ngoài các công cụ bạn đã đề cập, bạn có thể kiểm tra ant+ivy để xây dựng + phụ thuộc mgmt và rpmbuild + rpm + yum để quản lý gói trên linux.

Các vấn đề liên quan