Bir sunucuya EJB durum bilgisi olmayan bir fasulye enjekte etmeye çalışıyorum, ancak sunucu bir NullPointerExcetion atar. EJB ve sunucu uygulamasını dağıtmak için JBOSS kullanıyorum.Sunucuda EJB enjeksiyonu başarısız oluyor
Java dünyasına nispeten yeniyim, bu yüzden takip ettiğim adımları gönderiyorum.
Arayüz
package MavenEJB.Bidding`
import javax.ejb.Local;
@Local
public interface PlaceBid {
public String AddBid();
}
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";
}
}
Bean Ben maven kullanarak fasulye bir kavanoz dosyası oluşturulur ve ben JBoss dizinini "dağıtmak" için kavanoz dosyası kopyalandı. JMX konsolunda konuşlandırılmış fasulye görebiliyorum.
JMX konsoluna
+- PlaceBid (class: org.jnp.interfaces.NamingContext)
| +- local (proxy: $Proxy63 implements interface MavenEJB.Bidding.PlaceBid,interface org.jboss.ejb3.JBossProxy)
Benim servlet kod benim servlet'ten URL'sini işaret, ben NullPointerException olsun
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>");
}
....
}
Global Jndi Ad alanı. Fasulyeyi yorumladığımda ve başka bir şey yazdırdığımda, iyi yazdırılır. Bu yüzden sorun, sunucudaki EJB Dependency Injection ile ilgili olduğundan eminim. Gerçekten işe yaramadı, birileri bana yardım etsin diye pek çok çözüm önerdim.
Kendi cevabınızı kabul edebilirsiniz, böylece diğer kullanıcılar bu sorunun yanıtlandığını bileceklerdir. –