2012-09-18 43 views
5

Tôi có một số câu hỏi mô hình triển khai cho một ứng dụng web Java EE. Hiện tại chúng tôi đang triển khai ứng dụng web của chúng tôi dưới dạng tệp WAR trong Tomcat 6. Tất cả nội dung được đóng gói với tệp WAR bao gồm nội dung tĩnh như hình ảnh, trang html tĩnh và v.v. Nhưng tôi muốn triển khai các nội dung tĩnh này trong máy chủ HTTP và chỉ sử dụng Máy chủ ứng dụng để truy xuất nội dung động. Làm thế nào để tôi chia những thứ này? Có ai đã làm bất cứ điều gì của loại này và có một mô hình triển khai tốt cho kịch bản của tôi. Trợ giúp sẽ được đánh giá cao. Bạn có nên tạo 2 tệp tin WAR chỉ với một nội dung tĩnh và triển khai WAR đó trong máy chủ HTTP và phần còn lại dưới dạng tệp WAR khác và triển khai nó trong máy chủ Ứng dụng không? Không. Nhưng cách tiếp cận này sẽ có tác động đến tất cả các trang mà nội dung tĩnh hiện đang được giới thiệu và yêu cầu thay đổi mã rất cồng kềnh vì dự án của chúng tôi là rất lớn và mã dựa trên rất rất lớn.Cách sử dụng cả máy chủ ứng dụng và máy chủ http trong ứng dụng web java

Bất kỳ chiến lược và ý tưởng nào đều được hoan nghênh.

+0

Tại sao bạn muốn chia nội dung tĩnh và động? Đây có phải là một sự xem xét tổ chức hay bạn muốn cải thiện hiệu suất? –

+0

Cảm ơn các bình luận và tôi đánh giá cao từng ý kiến ​​của mỗi người. Đường cong học tập tốt đẹp cho tôi. Tôi muốn sử dụng cả máy chủ HTTP và Máy chủ ứng dụng để cải thiện hiệu suất của ứng dụng web của tôi. Tôi đã đọc một cuốn sách có tên "Phân tích hiệu suất cho các trang web Java ™" trong một thời gian. Và nó giới thiệu tôi để đặt nội dung tĩnh của tôi trong máy chủ HTTP và nội dung động trong máy chủ ứng dụng. Nhưng tôi không biết làm thế nào để làm điều đó thực tế. Tất cả tôi biết là làm thế nào để xây dựng một tập tin WAR và triển khai trong Tomcat mà là một máy chủ ứng dụng chúng tôi đang sử dụng cho việc triển khai của chúng tôi. –

+0

Vì vậy, câu hỏi của tôi có thể được sửa đổi như dưới đây. Làm cách nào để triển khai nội dung tĩnh của tôi trong máy chủ HTTP? Nếu tôi nhận được một số trợ giúp về điều này thì tôi có thể tiếp tục và xóa tất cả nội dung tĩnh của tôi khỏi tệp WAR và triển khai nó trong máy chủ HTTP và phần còn lại của các tệp bên trong WAR trong máy chủ Ứng dụng. –

Trả lời

1

Đây có thể là điều thú vị để làm vì lý do hiệu suất.

Bạn nên có các tập lệnh triển khai/triển khai riêng biệt để thực hiện việc này. Có nhiều tệp/WAR/thư mục/tập lệnh để triển khai cho một dự án không phải là vấn đề. Chúng tôi có cùng một điều khi bạn phải triển khai WAR của bạn và cập nhật cơ sở dữ liệu của bạn.

Tôi sẽ có tệp WAR và thư mục có nội dung tĩnh để triển khai.


Sửa

Triển khai nội dung tĩnh trong một máy chủ HTTP phụ thuộc vào máy chủ. Nếu bạn muốn sử dụng Apache trên máy chủ Linux, bạn phải thiết lập Virtual Host.

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

Trong ví dụ này, bạn có một máy chủ ảo mà lắng nghe trên cổng 80, đối với bất kỳ địa chỉ IP và cho tên máy chủ www.example.com. Sau đó, điều này được chuyển hướng đến đường dẫn /www/domain.

Bạn sẽ tìm thấy nhiều ví dụ và tùy chọn cấu hình hơn trong tài liệu.

+0

Làm cách nào để triển khai nội dung tĩnh của tôi trong máy chủ HTTP? Nếu tôi nhận được một số trợ giúp về điều này thì tôi có thể tiếp tục và xóa tất cả nội dung tĩnh của tôi khỏi tệp WAR và triển khai nó trong máy chủ HTTP và phần còn lại của các tệp bên trong WAR trong máy chủ Ứng dụng. –

0

Bạn không thể triển khai WAR tệp vào HTTP máy chủ. Một WAR được sử dụng cho Java ứng dụng web nó phải được triển khai vào máy chủ ứng dụng hoặc thùng chứa servlet (như Tomcat). Tôi không nghĩ rằng nó là một ý tưởng tốt để tách nội dung tĩnh trong một ứng dụng web riêng biệt. Nếu đây là một dự án cần một ứng dụng web, bên cạnh:

Một tập tin WAR có một cấu trúc thư mục đặc biệt và chứa các tập tin đặc biệt ngoài vào các trang JSP, Java servlets, các lớp Java, các trang HTML, vv kết hợp tạo thành một ứng dụng web.

Bạn có thể giữ nội dung tĩnh trong một ứng dụng của mình và thực sự không có gì xấu về nó.

Nếu dự án của bạn rất lớn và có nhiều tệp thì không có vấn đề gì, bạn chỉ cần sử dụng cấu trúc dự án như vậy, dễ hiểu và dễ đọc và máy chủ ứng dụng hoặc thùng chứa servlet sẽ xử lý triển khai càng nhiều nội dung càng tốt.

+0

Tôi đánh giá cao ý kiến ​​của bạn ... Nhưng yêu cầu của tôi là triển khai nội dung tĩnh của tôi vào máy chủ HTTP để cải thiện hiệu suất của ứng dụng web của tôi. Tôi không chắc chắn làm thế nào để bó và triển khai nội dung tĩnh trong máy chủ HTTP và truy cập nó từ các JSP bên trong một tệp tin WAR được triển khai trên một thùng chứa Tomcat. Bất kỳ trợ giúp nào về điều này sẽ tuyệt vời ... –

0

Tính đến phiên bản 4, Tomcat đã khá chậm trong việc phân phối nội dung tĩnh. Đây là lý do tại sao nó thường được khuyến khích để phân chia động từ nội dung tĩnh và phục vụ sau này bằng cách sử dụng một máy chủ web thông thường (cuốn sách bạn đề cập đã được ban hành vào năm 2002 ...). Các phiên bản Tomcat gần đây không phải đối mặt với vấn đề này, do đó bạn có thể IMHO không thể tách rời, đây có thể là một cơn ác mộng đối với cả tổ chức và bảo mật.

Đối với tài nguyên tĩnh, bạn có thể tập trung vào định cấu hình bộ nhớ đệm phù hợp, vì vậy chúng sẽ không được chuyển thường xuyên hơn mức cần thiết.

+0

Yeah Caching là một lĩnh vực nữa mà tôi cũng muốn xem xét. Trong thực tế, chúng tôi đã bắt đầu xem xét các truy vấn liên quan đến bảng chủ thường được sử dụng và một số phương pháp lưu vào bộ nhớ đệm cho chúng. Một cách tiếp cận là tải kết quả của các truy vấn này trong bộ nhớ trong thời gian khởi động ứng dụng web và sử dụng nó. Một vấn đề là làm mới những thứ trong bộ nhớ khi dữ liệu bảng chủ thay đổi ... Nhưng sẽ xem xét vấn đề bộ nhớ đệm riêng biệt này ... chỉ muốn chia sẻ rằng chúng ta cũng đang xem xét khía cạnh đó ... –

+0

Dữ liệu lưu trong bộ nhớ đệm từ db là một vấn đề khác - tôi có nghĩa là đặt tiêu đề bộ nhớ cache cho tài nguyên tĩnh trong máy chủ web, do đó trình duyệt sẽ chỉ tìm nạp chúng một lần. –

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