2012-04-18 42 views
7

Tôi hiểu rằng Apache TomEE là một cài đặt Tomcat thông thường với openejb như một ứng dụng web.Quy trình khởi động và cấu hình ứng dụng là gì khi sử dụng Apache TomEE

Tôi đang cố hiểu cách khởi động tất cả điều này. Tôi sẽ thử và hỏi một số câu hỏi được hướng dẫn:

  • Điều quan trọng là phải có đơn đặt hàng khởi động ứng dụng? Nên openejb bắt đầu trước khi ứng dụng web của tôi, hoặc cách khác tròn, hoặc không nó không quan trọng?
  • Liên quan đến câu hỏi trước đó. Làm thế nào để một ứng dụng doanh nghiệp đăng ký đậu của nó với openejb, hay liệu openejb có đi săn tìm các ứng dụng doanh nghiệp trong cùng một máy chủ, cho EJB không?
  • Ở cấp độ rất thường trực, làm cách nào họ có thể cung cấp openejb làm vùng chứa EJB, khi đó là một ứng dụng web khác. (IIRC mọi ứng dụng web trong Tomcat đều có đường dẫn lớp khác nhau và chúng không thể bước lên các ngón chân của nhau)

Bất kỳ thông tin quan trọng nào khác.

Trả lời

8

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.

+0

Cảm ơn câu trả lời tuyệt vời :-) – Parag

+0

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

+0

Đ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. –

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