2011-10-20 7 views
6
public class Servlet2Stateless extends HttpServlet { 

@EJB private HelloUserLocal helloUser; 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     resp.setContentType("text/html"); 
     PrintWriter out = resp.getWriter(); 
     out.println(newSess.getName()); 


} 

sẽ ở trên dòng mã hoạt động khi tôi có EJB và Servlet được triển khai trên các máy chủ khác nhau không? hoặc tôi cần gọi nó theo cách truyền thống ????có hoạt động chú thích @EJB cho cuộc gọi từ xa không?

Trả lời

6

Nếu EJB nằm trên máy chủ khác với máy khách (Servlet) của bạn hơn bạn không thể sử dụng phép chèn phụ thuộc với chú thích @EJB.

Tôi đoán bạn sẽ cần phải đi theo cách cũ của JNDI.

2

Theo thông số kỹ thuật của EJB 3.1, bạn có thể sử dụng chú thích @EJB trong nhiều ứng dụng khách, bao gồm cả servlet là trường hợp của bạn.

Vấn đề là bạn đang chạy ứng dụng khách và máy chủ trong các máy chủ khác nhau. Tùy thuộc vào máy chủ bạn đang sử dụng, bạn có thể sử dụng chú thích EJB. This post giải thích cách thực hiện trong Weblogic.

Không cần phải nói rằng bạn phải xác định EJB của máy chủ là @Remote trong cả hai trường hợp.

0

Nếu vùng chứa của bạn cũng hỗ trợ CDI, bạn có thể viết phương pháp sản xuất CDI cho bean mà không tra cứu JNDI. Sau đó, bạn có thể ít nhất là tách các tra cứu từ trang web tiêm.

0

Điều gì về việc sử dụng tiêm phụ thuộc trong ứng dụng khách độc lập?