Sto tentando di iniettare un bean stateless EJB in un servlet, ma il servlet lancia una NullPointerExcetion. Sto usando JBOSS per distribuire EJB e servlet.EJB injection in servlet failed
Sono relativamente nuovo al mondo Java, quindi sto postando i passi che ho seguito.
interfaccia
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";
}
}
ho creato un file JAR del bean utilizzando Maven e ho copiato il file jar per "distribuire" directory di JBoss. Sono in grado di vedere il bean distribuito nella console JMX.
globale JNDI Namespace in JMX console
+- PlaceBid (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy63 implements interface MavenEJB.Bidding.PlaceBid,interface org.jboss.ejb3.JBossProxy)
Il mio codice servlet
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>");
}
....
}
Quando indico l'URL del mio servlet, ho NullPointerException. Quando commento il fagiolo e stampo qualcos'altro, stampa bene. Quindi sono sicuro che il problema è con l'iniezione di dipendenza EJB nel servlet. Ho provato molte soluzioni suggerite altrove dove, niente ha funzionato davvero, qualcuno per favore aiutami.
Puoi accettare la tua risposta, in modo che altri utenti sappiano che questa domanda ha avuto risposta. –