2013-06-13 28 views
29

Làm cách nào để nâng cấp Mojarra trong máy chủ JBoss và cho biết sử dụng các JAR Mojarra 2.x đã cho thay vì JBoss riêng jboss-jsf-api_2.1_spec-2.0.1.Final.jar như được chỉ ra trong nhật ký khởi động?Nâng cấp JSF/Mojarra trong JBoss AS/EAP/WildFly

Nếu điều đó có liên quan, tôi hiện đang sử dụng JBoss AS 7.1.

Trả lời

57

Thủ tục dưới đây áp dụng cho JBoss AS 7.2+, JBoss EAP 6.1 trở lênJBoss WildFly 8 + và giả định rằng bạn đã kiểm soát hoàn toàn quá trình cài đặt máy chủ và cấu hình. Này nâng cấp mặc định phiên bản JSF server-rộng:

  • Tải cá nhân cá móm APIimpl file (và do đó không phải là đơn javax.faces.jar tập tin). Phiên bản 2.1.x mới nhất hiện tại là 2.1.29 và phiên bản 2.2.x mới nhất hiện tại là 2.2.14. Giả sử bạn muốn nâng cấp lên 2.2.x. Bạn có thể tải chúng riêng rẽ từ kho Maven của họ:
  • Hãy chắc chắn rằng JBoss là tắt máy.
  • Cập nhật JSF API trong /modules/system/layers/base/javax/faces/api/main:
    • Xóa hoặc sao lưu các tập tin JAR cũ (KHÔNG giữ nó trong cùng một thư mục, thậm chí không đổi tên!).
    • Đặt jsf-api-2.2.14.jar tệp trong đó.
    • mở module.xml tập tin và chỉnh sửa <resource-root> để chỉ định tên tập tin mới như trong <resource-root path="jsf-api-2.2.14.jar"/> impl
  • Cập nhật JSF trong /modules/system/layers/base/com/sun/jsf-impl/main:
    • Xóa hoặc sao lưu các tập tin JAR cũ (KHÔNG giữ nó trong cùng một thư mục, thậm chí không được đổi tên!).
    • Đặt jsf-impl-2.2.14.jar tệp vào đó.
    • mở module.xml tập tin và chỉnh sửa <resource-root> để chỉ định tên tập tin mới như trong <resource-root path="jsf-impl-2.2.14.jar"/> dữ liệu
  • Cleanup JBoss cache/công việc chỉ để chắc chắn rằng không có bản sao cũ của lọ từ triển khai trước đó treo ở đó mà sẽ có khả năng chỉ va chạm với các lọ mới:
    • Thùng rác tất cả các nội dung của /standalone/data (trừ các thư mục dữ liệu tùy chỉnh như thư mục chứa các file được tải lên, tất nhiên)
    • Thùng rác tất cả các nội dung của /standalone/deployments
    • Rác tất cả nội dung của /standalone/tmp
  • Bắt đầu JBoss. Bây giờ nó sẽ sử dụng phiên bản JSF mới cho tất cả các triển khai.

Các thủ tục tương tự áp dụng cho JBoss AS 7.0/7.1JBoss EAP 6.0, bạn chỉ cần duyệt trong /modules/* thay vì /modules/system/layers/base/*, và bạn cần phải xoá bỏ một cách rõ ràng .index tập tin cũ đó, nếu có (JBoss sẽ tự động tạo một cái). Ngoài ra, nếu module.xml trong thư mục API bỏ lỡ <module name="com.sun.jsf-impl"/> bên trong <dependencies>, thì bạn cần phải thêm thủ công thư mục đó.

Lưu ý quan trọng là phiên bản Mojarra 2.2.x cũ hơn 2.2.7 sẽ không thành công trong AS/EAP khi triển khai với ngoại lệ sau: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.faces.flow.builder.FlowDefinition. Sau đó, bạn về cơ bản có 2 tùy chọn: hạ cấp xuống Mojarra 2.1.x hoặc nâng cấp lên ít nhất là 2.2.7 hoặc mới hơn.

Trong trường hợp bạn muốn nâng cấp lên cá móm 2.3, mà không đưa ra một biến thể 2-JAR nữa trên Maven, bạn sẽ cần phải tự tạo ra các biến thể 2-JAR dựa trên javax.faces.jar tập tin theo thủ tục này: How to install one jar variant of JSF (javax.faces.jar) on WildFly.

+2

Bộ hướng dẫn sạch sẽ là gì. Nó đã làm việc. Cảm ơn bạn! – user2172625

+1

Bạn được chào đón. – BalusC

+0

Tôi đã folowed hướng dẫn này nhưng tôi khi tôi chạy máy chủ jboss7.1 tôi nhận được lỗi Lỗi nghiêm trọng trong quá trình triển khai:: java.lang.NoClassDefFoundError: com/sun/faces/spi/InjectionProvider, bất kỳ gợi ý nào? – simonC