EJB có rất nhiều hành lý. Một phần của hành lý đó xuất phát từ thực tế là nó đã nhắm mục tiêu sai đối tượng. Phần khác là hai phiên bản đầu tiên là hoàn toàn tào lao.
Nếu bạn nhìn vào các phiên bản EJB ban đầu, thiết kế là nhà phát triển EJB có thể tạo ra một giải pháp đóng gói có thể được sử dụng trong bất kỳ vùng chứa tuân thủ EJB nào. Đối với một cửa hàng trong nhà, mức độ trừu tượng này là không cần thiết. Đó là một giải pháp hoàn hảo để tạo ra một thị trường thịnh vượng cho các nhà cung cấp linh kiện EJB của bên thứ ba. Tuy nhiên, các nhà cung cấp Container đã quá nhiệt tình trong việc tiếp thị của họ và đang khiến hàng tấn bán sản phẩm của họ như một giải pháp khả thi cho sự phát triển mỗi ngày. Điều này sẽ tương đương với việc xây dựng tất cả mã ứng dụng của bạn dưới dạng các thành phần COM +.
Để biết thêm về nền tảng của thông số J2EE ban đầu, hầu hết các nhà cung cấp có liên quan đều có máy chủ CORBA và muốn tận dụng các sản phẩm này trong tương lai. Thông số EJB được xây dựng qua giao thức IIOP (thực ra là Java RMI, một lớp mỏng hơn IIOP). CORBA đã bị từ chối vì tính phức tạp của nó và EJB chỉ là CORBA được ngụy trang nên nó mang theo nhiều vấn đề mà CORBA gặp phải. Trên thực tế, sự trừu tượng của EJB khiến nó khó hoạt động hơn so với việc triển khai CORBA thuần túy.
Một khi cao su rơi xuống mặt đường, mọi người nhận ra rằng hiệu suất với EJB là tồi tệ. Với mỗi cuộc gọi là một cuộc gọi từ xa và khó khăn trong việc bắt đầu ứng dụng và chạy chính xác để bắt đầu, mọi người nhanh chóng tìm kiếm các lựa chọn thay thế. Hibernate và Spring chạy trong một thùng chứa JSP đã trở thành giải pháp.
EJB 3 "thông qua" phương pháp này. Nhưng đó vẫn là một sự thỏa hiệp chung không mang lại nhiều lợi ích. Vẫn chưa có thị trường thành phần EJB của bên thứ 3 nên thực sự không có điểm nào trong việc sử dụng bộ chứa EJB để xây dựng giải pháp của bạn.
Mẩu chuyện dài. Trong khi EJB 3 là một rộng lớn cải thiện so với hai lần lặp đầu tiên, nó vẫn không cung cấp đủ lợi ích để bù đắp chi phí.