Внедрение EJB в сервлет не удается

Я пытаюсь внедрить компонент EJB без сохранения состояния в сервлет, но сервлет выдает исключение NullPointerExcetion. Я использую JBOSS для развертывания EJB и сервлета.

Я относительно новичок в мире Java, поэтому я публикую шаги, которым следовал.

Интерфейс

package MavenEJB.Bidding`
import javax.ejb.Local;

@Local
public interface PlaceBid {
 public String AddBid();
}

Bean

package MavenEJB.Bidding;
import javax.ejb.Stateless;
@Stateless(name="PlaceBid")
public class PlaceBidBean implements PlaceBid {
 public PlaceBidBean(){}

 /**
  * Include logic to add the bid 
  */

 public String AddBid(){
  return "Placed bid using EJB"; 
 }
}

Я создал jar-файл bean-компонента с помощью maven и скопировал файл jar в каталог «развертывания» JBOSS. Я могу видеть bean-компонент, развернутый в консоли JMX.

Глобальное пространство имен JNDI в консоли JMX

+- PlaceBid (class: org.jnp.interfaces.NamingContext)
  |   +- local (proxy: $Proxy63 implements interface MavenEJB.Bidding.PlaceBid,interface org.jboss.ejb3.JBossProxy)

Мой код сервлета

public class PlaceBidServlet extends HttpServlet {

    @EJB
    private PlaceBid placeBid;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");

  PrintWriter out = response.getWriter();
     out.println("<HTML>");
     out.println("<HEAD><TITLE>Hello</TITLE></HEAD>");
     out.println("<BODY>");
  out.println("Output from EJB" +placeBid.AddBid());

     //out.println("Output from EJB" );
     out.println("</BODY></HTML>");  
 }

....
}

Когда я указываю на URL-адрес моего сервлета, я получаю исключение NullPointerException. Когда я комментирую bean-компонент и печатаю что-то еще, он печатается нормально. Поэтому я уверен, что проблема связана с внедрением зависимостей EJB в сервлет. Я пробовал много решений, предложенных в другом месте, но ничего не помогло, помогите мне, пожалуйста.

5
задан Maximus 14 December 2010 в 17:05
поделиться