[jboss-user] [EJB 3.0] - EJB3 and jndi error.
xubin
do-not-reply at jboss.com
Thu May 10 03:11:59 EDT 2007
I have a project on JBoss AS 4.0.5.GA with EJB3, the jdk is sun jdk6. And there is a stateless session bean(slsb) in my project. Another servelt in tomcat access the slsb with jndi. The error is that I can not find the slbs by jndi.
Below is the code:
slsb:
package com.sacl.ibs.ejb3;
|
| import java.io.Serializable;
| import java.util.List;
|
| import javax.ejb.Stateless;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
|
| import org.jboss.annotation.ejb.RemoteBinding;
| import org.jboss.annotation.ejb.RemoteBindings;
|
| @Stateless
| @RemoteBindings(@RemoteBinding(jndiBinding="com.sacl.ibs.ejb3.IBSManager"))
| public class IBSManagerBean implements IBSManager, Serializable {
| private static final long serialVersionUID = -2836261119947098786L;
| @PersistenceContext(unitName="ibs")
| EntityManager em;
|
| }
servlet:
package com.sacl.ibs.web;
|
| import java.io.IOException;
| import java.io.PrintWriter;
| import java.util.Properties;
|
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
| import javax.servlet.ServletConfig;
| import javax.servlet.ServletException;
| import javax.servlet.http.HttpServlet;
| import javax.servlet.http.HttpServletRequest;
| import javax.servlet.http.HttpServletResponse;
|
| import com.sacl.ibs.ejb3.IBSManager;
|
| public class JNDIServlet extends HttpServlet{
|
| private static final long serialVersionUID = 3636864192783338015L;
| private static Context ctx;
| private static IBSManager manager;
|
| public void init(ServletConfig config) throws ServletException {
|
| }
|
|
|
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
| doPost(req, resp);
| }
|
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
| try {
| PrintWriter out = resp.getWriter();
|
| if(ctx == null){
| Properties env = new Properties();
| env.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
| env.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interface");
| env.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099");
|
| out.println("env ok!");
|
| try {
| ctx = new InitialContext(env);
| if(manager == null){
| //manager = (IBSManager)ctx.lookup(IBSManager.class.getName());
| manager = (IBSManager)ctx.lookup("java:"+IBSManager.class.getName());
| out.println("manager ok!");
|
| //ctx.lookup("java:comp/env/ejb/com/atsva/cmmts/ejb/DesignObjectManager");
|
| }
|
| } catch (NamingException e) {
| // TODO Auto-generated catch block
| e.printStackTrace();
| out.println(e);
| }
| }
|
|
|
|
| out.println(manager.hello("Kitty"));
|
| } catch (Exception e) {
| // TODO: handle exception
| }
|
|
| }
|
|
| }
When I run the servlet, it show "javax.naming.NameNotFoundException: com.sacl.ibs.ejb3.IBSManager not bound".
And in jboss as console, when jboss as start, it show:
anonymous wrote : 13:49:51,609 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
| 13:49:51,609 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
| 13:49:51,843 INFO [EJBContainer] STARTED EJB: com.sacl.ibs.ejb3.IBSManagerBean ejbName: IBSManagerBean
| 13:49:51,906 INFO [EJB3Deployer] Deployed: file:/C:/jboss-4.0.5.GA/server/default/tmp/deploy/tmp33327IBS.ear-contents/IBS.par
| 13:49:51,953 INFO [EARDeployer] Started J2EE application: file:/C:/jboss-4.0.5.GA/server/default/deploy/IBS.ear
It don't say the session bean was been bound.
I'll appreciate any help with this.
Thanks
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044583#4044583
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044583
More information about the jboss-user
mailing list