Thứ Ba, 9 tháng 8, 2016

Khắc phục việc deploy ứng dụng trên server J2EE/JAVAEE server bị mất context

KHẮC PHỤC VIỆC PORT BỊ CHIẾM KHÔNG THỂ KHỞI ĐỘNG ĐƯỢC CÁC LOẠI SERVER J2EE/JAVAEE

Khắc phục việc deploy ứng dụng trên server J2EE/JAVAEE server bị mất context

 

Mục đích của chủ đề này hướng tới việc giải quyết vấn đề khi chúng ta deploy ứng dụng trên server J2EE hay JavaEE bị mất context dẫn đến bị lỗi vzip file. Ở động chúng tôi khắc phục lỗi này trên server JBoss và Tomcat để lấy lại sự tự tin của các bạn khi thấy một lỗi không đáng có do tool phát sinh gây ra dẫn đến chúng ta giái quyết vấn đề một cách nhanh chóng

KHẮC PHỤC VIỆC DEPLOY ỨNG DỤNG TRÊN SERVER J2EE/JAVAEE SERVER BỊ MẤT CONTEXT

 

Mục đích của chủ đề này hướng tới việc giải quyết vấn đề khi chúng ta deploy ứng dụng trên server J2EE hay JavaEE bị mất context dẫn đến bị lỗi vzip file. Ở động chúng tôi khắc phục lỗi này trên server JBoss và Tomcat để lấy lại sự tự tin của các bạn khi thấy một lỗi không đáng có do tool phát sinh gây ra dẫn đến chúng ta giái quyết vấn đề một cách nhanh chóng

 

JBoss Server

  • Lỗi – Problem

Khi chúng ta deloy một ứng dụng trên server JBoss và server phát sinh những lỗi tương tự như sau (ở đây tôi sử dụng bài tutorial ứng dụng Security trong EJB 3.0 - (https://www.facebook.com/TrongKhanh.Kieu/posts/275300879509292) )

INFO  [TomcatDeployment] deploy, ctxPath=/

ERROR [AbstractKernelController] Error installing to Start: name=jboss.web.deployment:war=/ state=Create mode=Manual requiredState=Installed

org.jboss.deployers.spi.DeploymentException: Web mapping already exists for deployment URL file:/ thư mục cài đặt JBOSS

Hay lỗi

ERROR [AbstractKernelController] Error installing to Real: name=vfszip:/ thư mục cài đặt JBoss tate=PreReal mode=Manual requiredState=Real

org.jboss.deployers.spi.DeploymentException: Web mapping already exists for deployment URL file:/ thư mục cài đặt JBoss

Hay lỗi

DEPLOYMENTS IN ERROR:

  Deployment "vfszip:/C:/Programming/jboss-5.1.0.GA/server/default/deploy/EJB3Security.ear/" is in error due to the following reason(s): org.jboss.deployers.spi.DeploymentException: Web mapping already exists for deployment URL file:/ thư mục cài đặt JBOSS

Hay khi chúng ta deploy không có lỗi gì cả nhưng bật trang web từ NetBeans từ cửa sổ Services, chọn Open in Browser để mở trang web chúng ta thấy browser xuất hiện như sau

  • Cách khắc phục – Solution

Chúng ta vào trong gói web của project chúng ta đang thực hiện (ở đây ví dụ: EJB3Security-war), chúng ta tìm kiếm tập tin jboss-web.xml trong thư mục WEB-INF

Mở tập tin này ra chúng ta thấy như sau

Chúng ta thấy nội dung trong khung đỏ context-root không ghi gì cả nghĩa là tất cả ứng dụng đuợc thiết lập là root của server nên dẫn đến lỗi phát sinh trên server hay context bị mất như đã nêu trên

Chúng ta khắc phục vấn đề này bằng cách bổ sung context root lại cho ứng dụng bằng cách như sau

  • Chúng bỏ dấu “/” trong context-root
  • Di chuyển con trỏ về cuối hay phía sau “>”, nhấn tổ hợp phím Ctrl + Space bar để phát sinh tag đóng như sau

 

  • Chúng ta thực hiện điền context root mà chúng ta muốn hay copy tên web project để đưa vào giữa nội dung 02 tag. Lưu ý: phải có dấu “/” để thể hiện tính từ root

 

  • Chúng ta thực hiện Build and Clean, Deploy và Test. Chương trình sẽ trở lại bình thường (trong trường hợp chúng ta viết code hoàn toàn chính xác)
  • Lỗi trên là do tool Netbeans khi build lại phát sinh lỗi. Thật là dễ dàng để khắc phục nếu chúng ta bình tình và biết cách khắc phục

Cách khắc phục được áp dụng tương tự trên EJB 2.1 hay các ứng dụng web được deploy trên server JBoss 4.2.3GA hay JBoss 5.1.0GA

 

Server Tomcat

  • Chúng tôi sẽ làm demo lỗi trên ví dụ MVC trong bài MVC Pattern trên Web
  • Lỗi – Problem: thư muc deploy của ứng dụng chúng ta là tại thư mục root “/”, mất tên context của ứng dụng

    • Nhìn về phía server sẽ không thấy ứng dụng hay context bị deploy

    • Khi run ứng dụng, chúng ta thấy ứng dung chúng ta chạy từ thư mục gốc trên URL của address bar

  • Nguyên nhân: Chúng ta mở tập tin context.xml trong thư mục META-INF trong Webpages chúng ta thấy giá trị trong thuộc tính path bị rỗng hay xóa trắng (lỗi của tool khi deploy) dẫn đến server và container hiểu nó là deploy tại gốc

  • Cách khắc phục: Chúng ta bổ sung tên context (có thể là tên project hay tên bất kỳ chúng ta muốn) theo cú pháp “/tênContext” (Lưu ý bắt buộc phải có / để thể hiện đi từ root)

    • Thực hiện build and clean, deploy lại, chúng ta sẽ thấy điểm khác biệt giữa sau khi chỉnh sửa qua 02 màu đỏ và xanh

    • Server của Services cập nhật

    • Thực thi chương trình

 

Nội dung của các vấn đề và cách giải quyết trong chủ đề này đã nêu lên một số vấn đề thường gặp khi triển khai chương trình của mô hình J2EE/JavaEE. Rất hy vọng các nội dung chúng tôi đề xuất sẽ giúp ích quí vị trong thực tế triển khai trên các server hỗ trợ J2EE/JavaEE như Sun – Glassfish, JBoss, Tomcat …

 

Hẹn gặp lại quí vị ở các chủ đề khác

 

Không có nhận xét nào:

Đăng nhận xét