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
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)
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
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 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
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