2011-07-15 33 views
14

Một câu hỏi rất đơn giản. Tôi có một .war (~ 40MB) tập tin được chạy trên JBoss. Thực tiễn tốt nhất để triển khai là gì: Tệp chiến tranh có được triển khai ở định dạng phát nổ không? Hay không?Triển khai Java webapp: phát nổ hay không phát nổ?

Tôi hỏi vì nếu nó phát nổ sau đó tôi đã lựa chọn cập nhật tệp thuộc tính của tôi bất cứ lúc nào tôi chọn (và không cần phải thực hiện một cuộc chiến mới mỗi khi tôi thay đổi tệp thuộc tính).

Nhưng tôi không chắc liệu triển khai chiến tranh ở định dạng đã phát nổ có phải là cách hay nhất hay không.

Hãy giúp tôi nhận ra. :)

+0

Ngoài ra, ai đã quyết định gọi nó là 'phát nổ' thay vì chỉ 'chiết xuất'? Chắc chắn nó vui hơn nhưng tất cả mọi người nên gọi một thứ gì đó là :). – bbarker

Trả lời

8

Sửa đổi nội dung phát nổ chắc chắn nhanh hơn và hiệu quả hơn, nhưng một xem xét là kiểm tra và truy xuất nguồn gốc. Một lợi thế của việc triển khai các tệp tin WAR và xử lý chúng như là "niêm phong" là bất kỳ thay đổi nào bạn thực hiện sẽ phải được ghi lại trong hệ thống quản lý mã nguồn của bạn. Bạn chắc chắn không muốn mọi người có khả năng thay đổi bất cứ điều gì họ muốn trong cấu hình ứng dụng của bạn mà không có một số loại đường mòn kiểm toán.

Việc tách biệt các mối quan tâm của Java EE thường có nghĩa là nhà phát triển WAR không phải là người giống với quản trị viên cho máy chủ ứng dụng. Nếu nhà phát triển không có quyền truy cập trực tiếp, điều đó có nghĩa là những người không biết rõ ứng dụng đang thực hiện thay đổi.

Tôi không bảo vệ tâm lý cực đoan ngăn cấm các nhà phát triển sửa đổi một WAR đã phát nổ, chỉ cần chỉ ra một cách nhìn khác để bạn xem xét.

+0

Cảm ơn @duffymo. Tôi sẽ cân nhắc điều đó. Tuy nhiên, dựa trên yêu cầu của tôi, cho đến nay sự cân bằng đang nghiêng về phía phát nổ. – pavanlimo

+0

Một vài năm sau, tôi nghĩ đây là câu trả lời phù hợp hơn cho câu hỏi. Câu trả lời là không phát nổ trừ khi bạn thực sự thực sự cần. – pavanlimo

1

Nếu bạn cần thay đổi cấu hình bên trong .war mà không cần triển khai lại, tôi muốn triển khai phát nổ. Nếu không, tôi muốn triển khai tệp (khi đó tệp jboss sẽ giải nén tệp thành tmp/deploy/..)

+1

Nhưng có phải là "ok" để triển khai ở định dạng phát nổ cho môi trường sản xuất không? – pavanlimo

+2

vâng, tất nhiên. Nhiều nhà xuất bản khác cũng làm điều này (ví dụ: TeamCity, Hyperic HQ, ...) – powerMicha

+0

Cảm ơn @powerMicha vì thông tin đó. Bạn có biết bất kỳ tài liệu/bài viết nào nói về các phương pháp hay nhất để triển khai ứng dụng web java không? – pavanlimo

14

Tệp chiến tranh có nên được triển khai ở định dạng đã phát không? Hay không?

sẽ Điều này phụ thuộc vào nhiều yếu tố:

  • bạn sẽ yêu cầu quản trị ứng dụng máy chủ sửa đổi các nội dung của tập tin WAR sau khi triển khai? Nếu câu trả lời là có, đặc biệt là trong trường hợp các tệp cấu hình hoặc thuộc tính có liên quan, thì bạn nên sử dụng định dạng đã phát nổ. Điều này sẽ giúp dễ dàng thực hiện các thay đổi trong các tệp, mà không yêu cầu triển khai lại tệp WAR hoàn chỉnh.
  • Làm cách nào để tuyên truyền các thay đổi đối với sản xuất? Nếu bạn không biên dịch trước các tệp JSP của mình và nếu bạn dự định triển khai các phiên bản JSP mới hơn bằng cách sao chép chúng sang vùng chứa tệp WAR đã phát nổ, thì rõ ràng là việc triển khai lại tệp WAR lớn không phải là một giải pháp tối ưu. Tuy nhiên, lưu ý rằng điều này sẽ phụ thuộc vào thực tiễn triển khai của bạn. Thông thường, dễ dàng hơn để kiểm tra xem tệp WAR trong sản xuất có phải là bản sao của một bản dựng được tạo ra từ điều khiển phiên bản, với một băm đơn của tệp WAR không. Nếu bạn triển khai các thay đổi gia tăng, bạn sẽ thấy rằng các hash sẽ được yêu cầu cho mọi tệp được triển khai.
  • Bạn muốn triển khai và cung cấp ứng dụng của mình trong bao lâu? Điểm này là tầm thường, nhưng có đủ các trường hợp ứng dụng mất vài phút để bắt đầu vì máy chủ ứng dụng đang bận phát nổ tệp WAR và tạo lại các tạo phẩm cần thiết. Điều này có thể dẫn đến thời gian chết đáng kể, nếu hành vi của máy chủ là phát nổ tệp WAR trên mỗi lần khởi động lại máy chủ ứng dụng. Vì tôi không biết về hành vi của JBoss hoặc phiên bản cụ thể được đề cập, tôi khuyên bạn nên tự xác minh điều này, để đảm bảo rằng bạn có thể giới hạn thời gian ngừng hoạt động ở mức có thể chấp nhận được.
+0

Điều đó khá phức tạp. Cảm ơn Vineet. – pavanlimo

+0

@pavanlimo, bạn được chào đón. –

0

Mọi thứ đều bị phát nổ để bạn có thể thay đổi các thuộc tính ngay cả khi được triển khai dưới dạng chiến tranh ... nó không có sự khác biệt. Trong môi trường phát triển ít nhất.

Tuy nhiên, nếu bạn đang triển khai ở định dạng được phát ra để sản xuất, bạn có thể thay đổi tệp thuộc tính không phải là vấn đề lớn hơn mà bạn cần thay đổi thuộc tính (sản xuất) sau khi triển khai? Và liệu bạn có sử dụng chiến tranh hay không.

+0

Tôi không thể hiểu rõ bạn, nhưng nếu bạn khởi động lại máy chủ, thay đổi tệp thuộc tính được thay thế bằng tệp thuộc tính ban đầu vì không có sự xung đột xảy ra ở vị trí tạm thời. – pavanlimo

+0

@pavanlimo Tôi biết, chúng tôi đã thay đổi tệp ở vị trí tạm thời trong khi phát triển. Tôi không chắc chắn nếu bạn đang làm điều này trong dev hoặc sản xuất. Quan điểm của tôi là bạn nên xem xét lý do tại sao bạn đang thay đổi các thuộc tính trong môi trường sản xuất (nếu bạn đang có). Nếu bạn đang nói về dev, nó không quan trọng, imho, nhưng tôi thích chiến tranh hơn. – NimChimpsky

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