2013-07-10 46 views
8

Gần đây, tôi đã áp dụng bản sửa lỗi cho ứng dụng Java trên máy tính để bàn. Tôi đã làm điều này bằng cách thay đổi mã trong một trong các lớp học của tôi, biên dịch nó và gửi bình mới đến môi trường sản xuất.Làm thế nào để vá một chương trình Java?

Tôi bây giờ được hỏi liệu có thể chỉ vá bình trong sản xuất bằng cách sao chép lớp đã biên dịch mà tôi đã sửa hoặc thậm chí tạo một chương trình/tập lệnh vá sẽ chỉ có thể cập nhật các tệp đã sửa đổi.

Thông tin thêm:

  1. Các miếng vá không nhất thiết phải được áp dụng trong thời gian chạy. Có nghĩa là các bản vá có thể được thực hiện như là một chương trình riêng biệt hoặc hoạt động. Chương trình cũ của tôi không cần tự động cập nhật.
  2. Điều này có thể được thực hiện với các ứng dụng web (tệp WAR) không?

Câu trả lời hay nhất tôi đưa ra là đây, nhưng đã 2 tuổi. Patching Java software

Yêu cầu của tôi có hiếm không? Tôi chưa bao giờ thấy một hướng dẫn để vá một ứng dụng Java.

+0

Câu hỏi này có vẻ ngoài chủ đề vì nó là về cơ sở hạ tầng - phù hợp hơn với người lập trình hoặc có thể serverfault – Bohemian

Trả lời

7

Tôi bây giờ hỏi nếu nó có thể chỉ là vá các jar trong sản xuất bởi chỉ cần sao chép các lớp biên soạn mà tôi cố định, hoặc thậm chí tạo ra một chương trình vá/script sẽ có thể cập nhật chỉ các tập tin sửa đổi .

Có. Có thể vá một tệp JAR bằng cách sử dụng jar -u. Cũng có thể vá một tệp WAR theo cùng một cách.

Nhưng tôi KHÔNG khuyên bạn nên sử dụng. Tệp JAR hoặc WAR phải là đơn vị triển khai/quản lý. Nếu bạn bắt đầu vá các tệp JAR/WAR trên các máy chủ sản xuất, thật khó để theo dõi những gì đang thực sự được sử dụng ở đâu. Nếu bạn không cẩn thận, hỗn loạn và nhầm lẫn sẽ trị vì.

Tình huống duy nhất mà việc vá không thể tránh khỏi là nơi bạn có thư viện của bên thứ ba hoặc thứ gì đó mà bạn không thể xây dựng từ nguồn, nhưng bạn cần sửa đổi. Nhưng ngay cả trong trường hợp đó, tốt nhất là sửa đổi JAR/WAR trên nền tảng xây dựng của bạn và triển khai JAR/WAR đã sửa đổi. Cố gắng vá các JAR, WAR hoặc các ứng dụng web được triển khai trên nền tảng sản xuất là một ý tưởng tồi.


Yêu cầu của tôi có hiếm không?

Có. Có một cách tốt hơn ...

Tôi chưa bao giờ thấy hướng dẫn để vá ứng dụng Java.

Không đáng ngạc nhiên, cho rằng có một cách tốt hơn ...

+0

Cảm ơn câu trả lời của bạn. Như tôi đã nói trong triển khai lại thử nghiệm Jar/War là những gì tôi thường làm. Đây là một nhiệm vụ từ bộ phận an ninh và tiêu chuẩn của chúng tôi và tôi vui vì tôi không phải là người duy nhất tìm thấy yêu cầu này là lạ. –

+0

@JefreyValencia - Tôi sẽ bị cám dỗ để đẩy lùi với "cung cấp cho chúng tôi các bản vá lỗi và thử nghiệm đúng JAR". Tôi cũng tò mò muốn biết họ đang yêu cầu bạn vá gì. Tất cả đều nghe có vẻ hơi lạ lùng ..,. –

+0

Xin chào một lần nữa Stephen, nhiều hay ít nhóm bảo mật và tiêu chuẩn chỉ đang cố gắng theo dõi những thay đổi chúng tôi thực hiện đối với ứng dụng đã có trong sản xuất. Một trong những ví dụ của họ (giản thể/Rephrased) là nếu một lỗi tồn tại trong hệ điều hành Windows là bạn chỉ cần vá nó hơn là cài đặt lại ứng dụng. Lập luận này có ý nghĩa nhưng trong kinh nghiệm hạn chế của tôi, tôi không biết liệu nó có khả thi hay thậm chí là thực hành tốt cho một ứng dụng java. –

4

Bạn có thể cập nhật các lọ cũ bằng cách làm jar uf jarfile classfile(s)

này sẽ thay thế các tập tin lớp cũ cùng tên với những cái mới, làm cho một patcher tự động sử dụng mà không nên cứng

+0

Cảm ơn câu trả lời của bạn, chỉ cần chọn Stephen trả lời vì anh ấy cũng đã thêm thông tin bổ sung. –

2

Đối với việc triển khai các ứng dụng máy tính để bàn Java. , tùy chọn tốt nhất thường là cài đặt ứng dụng. sử dụng Java Web Start. JWS hoạt động trên Windows, OS X & * nix. Nó bao gồm tự động cập nhật.

Điều này có thể được thực hiện với các ứng dụng web (tệp WAR) không?

No. JWS dành cho ứng dụng dành cho máy tính để bàn. chỉ có.

+0

Cảm ơn bạn đã trả lời. Chúng tôi có thể thử điều này trên các ứng dụng máy tính để bàn trong tương lai –

0

Hãy xem để Getdown - nhằm cung cấp một hệ thống để tải về và cài đặt một bộ sưu tập các tập tin trên máy tính của người dùng và nâng cấp các tập tin khi cần thiết.

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