2011-10-17 22 views
5

Tôi có một EAR với WAR rằng tôi đang triển khai trên GlassFish 3.1GlassFish 3.1, cách triển khai EAR với WAR trong thư mục gốc của máy chủ?

Hiện nay, các ứng dụng chạy ở localhost: 8080/myapp/index.jsf

Tôi muốn nó chạy trên localhost: 8080/index.jsf

để thực hiện điều này, tôi đã thay đổi application.xml trong EAR từ contextRoot "myapp" để contextRoot = "/"

Khi tôi triển khai EAR của tôi bằng cách sử dụng giao diện người dùng quản trị GlassFish, nó mang lại cho tôi một lỗi triển khai, sau đó khi tôi cố gắng duyệt đến giao diện người dùng quản trị, nó cho tôi thấy trang chủ GlassFish mặc định. Để khôi phục tôi phải undeploy EAR của tôi bằng cách sử dụng asadmin từ dòng lệnh và sau đó làm một tên miền khởi động lại để khởi động lại máy chủ.

Lý thuyết của tôi là ứng dụng của tôi và giao diện người dùng quản trị GlassFish đều chạy trên root "/".

CÂU HỎI: Cách chính xác để triển khai ứng dụng web của tôi trong thư mục gốc của GlassFish 3.1 là gì? Hay thực hành xấu này?

Cảm ơn!

Rob

+0

Tôi nghĩ rằng tôi đã làm theo các bước của bạn và không thể tái tạo vấn đề bạn đang thấy. Tôi đang sử dụng Mac OS X 1.7.2, GF 3.1.1. Các bước của bạn hoạt động tốt cho tôi ... mặc dù chúng hơi mơ hồ và tôi có thể giải thích chúng không chính xác, do đó tôi không thể tái tạo vấn đề. Thêm chi tiết về 'nó mang lại cho tôi một lỗi triển khai' có thể là một bổ sung hữu ích cho câu hỏi này. – vkraemer

+0

@vkraemer - Tôi đã bắt đầu một câu hỏi mới chi tiết hơn cho vấn đề của tôi, vui lòng truy cập vào nó, mọi trợ giúp đều được đánh giá cao! http://stackoverflow.com/questions/7878645/errors-deploying-war-in-root-context-on-glassfish-3-1 –

Trả lời

2

Rob,

Nếu triển khai của bạn từ dòng lệnh, bạn có thể sử dụng một cuộc tranh cãi để asadmin chọn gốc ngữ cảnh. Điều này chưa bao giờ cho tôi vấn đề bạn mô tả.

$ asadmin triển khai --contextroot "/" your.war

tùy chọn khác của bạn là để dưới các thiết lập máy chủ ảo để lựa chọn một module web mặc định, nhưng cá nhân tôi thích chỉ thiết lập một ứng dụng đến /.

Kevin

+0

Tôi không chắc chắn rằng --contextroot hoạt động với một tập tin tai ... – vkraemer

+0

@ Kevin - Tôi đã giải thích chi tiết hơn về vấn đề của mình, vui lòng tham gia: http://stackoverflow.com/questions/7878645/errors-deploying-war-in-root-context-on-glassfish-3-1 –

+0

doesn ' t làm việc cho một EAR ... – Damian

3

Cách dễ nhất là có glassfish-web.xml.

Đây là cấu hình của tôi được đặt tại thư mục WEB-INF của tôi.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
    <context-root>/myapplication</context-root> 
</glassfish-web-app> 

Lưu ý, bạn nên cân nhắc sử dụng chiến tranh thay vì tai. Glassfish 3.x là thực hiện tham chiếu cho JavaEE6 có một tính năng để sử dụng chiến tranh với EJB's. Đó là để nói rằng bạn có thể dễ dàng sử dụng chiến tranh của bạn với ejb của bạn mà không có bó tai. Nó sẽ không chỉ làm giảm kích thước ứng dụng của bạn một cách đáng kể mà còn cho phép bạn thực hành tốt về các vấn đề tải lớp, bộ nhớ, vv ...

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