Я пытаюсь внедрить компонент 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 в сервлет. Я пробовал много решений, предложенных в другом месте, но ничего не помогло, помогите мне, пожалуйста.