Я пытаюсь внедрить 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-файл в каталог "deploy" JBOSS.Я могу видеть компонент, развернутый в консоли 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.Когда я комментирую бин и печатаю что-то еще, он печатается нормально.Так что я уверен, что проблема в инъекции зависимостей EJB в сервлете.Я пробовал много решений, предложенных где-то, где ничего не получалось, кто-то, пожалуйста, помогите мне.