Việc tích hợp được bootstrapped qua dòng này trong conf/server.xml
:
<Listener className="org.apache.tomee.loader.OpenEJBListener" />
Điều này xảy ra ngay lúc khởi động trước khi bất kỳ ứng dụng được khởi động. Các thư viện từ thư mục <tomcat-home>/webapps/openejb/lib
được thêm vào bộ nạp lớp hệ thống Tomcat, một trình lắng nghe khác được cài đặt để tham gia triển khai và từ đó mọi thứ xảy ra khi sử dụng các sự kiện trong vòng đời Tomcat. Tomcat sẽ phát hành một số sự kiện khi khởi động ứng dụng (triển khai) và tắt máy. Bản thân Tomcat sử dụng chúng để triển khai các servlet và về cơ bản sự tích hợp chỉ giống nhau hơn. Các nhà cung cấp khác bao gồm Tomcat cũng sử dụng các móc này. Từ quan điểm đó, sự tích hợp thực sự khá nhàm chán :)
Bước ngoặt thú vị duy nhất là đặt các thư viện phụ vào một tệp chiến tranh. Điều đó thực sự chỉ được thực hiện để làm cho việc cung cấp và thêm các thư viện bổ sung vào một cài đặt Tomcat hiện có dễ dàng nhất có thể (và dễ dàng nhất có thể để loại bỏ). Tất cả các thư viện từ <tomcat-home>/webapps/openejb/lib
có thể dễ dàng đi ngay trong <tomcat-home>/lib
. Tại thời điểm đó, điều duy nhất bạn có thể muốn chiến tranh webapss/openejb/
là có thể gọi EJB qua HTTP.
Vì vậy, câu trả lời ngắn là:
- appliction trật tự khởi động không quan trọng
- EJB triển khai xảy ra side-by-side với việc triển khai Servlet
- Chum được bổ sung vào hệ thống classloader Tomcat ngay trên Bản thân Tomcat bắt đầu lên
Điều thú vị cần lưu ý trong câu trả lời khác là Tomcat thực sự chỉ khởi động với hai lọ trong đường dẫn lớp. Bản thân Tomcat thực sự thêm tất cả các lọ từ <tomcat-home>/lib/
tự động khi khởi động. Chúng tôi về cơ bản làm điều tương tự, chỉ từ <tomcat-home>/webapps/openejb/lib
Tôi không nghĩ rằng chúng tôi đã thực sự thử nghiệm di chuyển các thư viện thành <tomcat-home>/lib/
và xóa webapp OpenEJB (được gọi là tomee.war
trong bản phát hành chính thức sắp tới), nhưng tôi sẽ tạo một ghi chú để thử điều đó. Có vẻ như một điều tốt để hỗ trợ hoặc thậm chí có thể làm theo mặc định. Bạn có thể xóa trình quản lý Tomcat và các ứng dụng web ROOT, do đó, có vẻ như là một ý tưởng hay để dễ dàng xóa cả openejb.war.
Nguồn
2012-04-19 08:07:25
Cảm ơn câu trả lời tuyệt vời :-) – Parag
Bạn đề cập đến 'Tại thời điểm đó, điều duy nhất bạn có thể muốn webaps/openejb/war là có thể gọi EJB qua HTTP.' Tôi xin lỗi nếu câu trả lời là hiển nhiên, nhưng tại sao chúng ta không thể phục vụ các yêu cầu HTTP cho EJB nếu chúng ta có tất cả các lọ openejb trong/lib? –
Parag
Điều tôi ngụ ý là nếu các libs được di chuyển và cuộc chiến webapps/openejb bị xóa, thì EJB trên chức năng HTTP sẽ bị xóa. –