Próbuję wprowadzić bezstanową integrację EJB do serwletu, ale serwlet zgłasza NullPointerExcetion. Używam JBOSS do wdrożenia EJB i serwletu.Wstrzyknięcie EJB w serwlinie kończy się niepowodzeniem.
Jestem stosunkowo nowy w świecie Java, więc zamieszczam kroki, które podjąłem.
Interfejs
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";
}
}
stworzyłem plik słoik fasoli za pomocą Maven i kopiowany plik jar do "wyzwolenia" katalog JBoss. Jestem w stanie zobaczyć komponent bean wdrożony w konsoli JMX.
Globalny nazw JNDI w JMX konsoli
+- PlaceBid (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy63 implements interface MavenEJB.Bidding.PlaceBid,interface org.jboss.ejb3.JBossProxy)
mój kod serwletu
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>");
}
....
}
Kiedy wskazywać na URL mojego serwletu otrzymuję NullPointerException. Kiedy komentuję komponent bean i drukuję coś innego, to drukuje dobrze. Tak więc jestem pewien, że problem dotyczy wtrysku zależności EJB w serwlecie. Próbowałem wielu rozwiązań sugerowanych gdzie indziej, nic tak naprawdę nie działało, ktoś mi pomóż.
Możesz zaakceptować własną odpowiedź, aby inni użytkownicy wiedzieli, że odpowiedź na to pytanie została udzielona. –