jboss 配置jndi的问题
我用的是jboss-4.0.2
我在JBOSS_HOME\server\default\deploy 下建hello.jar\hello\ejb的目录,在hello.jar\hello\ejb下有若干class和目录META-INF,META-INF下有jboss.xml,ejb-jar.xml
其中jboss.xml:
<?xml version="1.0" encoding="gb2312"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>Hello</jndi-name>
</session>
<secure>true</secure>
</enterprise-beans>
<reource-managers/>
</jboss>
ejb-jar.xml:
<?xml version="1.0" encoding="gb2312"?>
<ejb-jar>
<description>This is Hello EJB example</description>
<display-name>helloeEJB</display-name>
<enterprise-beans>
<session>
<display-name>Hello</display-name>
<ejb-name>Hello</ejb-name>
<home>hello.ejb.HelloHome</home>
<remote>hello.ejb.Hello</remote>
<ejb-class>hello.ejb.HelloEjb</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
现在有两个问题:
1.META-INF下的jboss.xml我看有的文档说是jboss-service.xml,不知到底应该是哪个文件名
2.通过servlet调用ejb,http://127.0.0.1:8080/hello/HelloServlet
出错:javax.servlet.ServletException: javax.naming.NameNotFoundException: Hello not bound
其中HelloServlet的代码如下,请问是什么原因,谢谢
HelloServlet.java
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import javax.ejb.*;
import javax.naming.InitialContext;
import javax.naming.Context;
import java.util.*;
import hello.ejb.*;
public class HelloServlet extends HttpServlet
{
private HelloHome home;
public void init() throws ServletException
{
try
{
String initCtxFactory = getInitParameter(Context.INITIAL_CONTEXT_FACTORY);
String providerURL = getInitParameter(Context.PROVIDER_URL);
Properties env = new Properties();
if(initCtxFactory!=null)
{
env.put(Context.INITIAL_CONTEXT_FACTORY,initCtxFactory);
}
if(providerURL!=null)
{
env.put(Context.PROVIDER_URL,providerURL);
}
Context ctx=new InitialContext(env);
Object objRef = ctx.lookup("Hello");
// 主接口
home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(objRef,hello.ejb.HelloHome.class);
}catch(javax.naming.NamingException ne)
{
System.out.println("Create Exception caught:"+ne);
throw new ServletException(ne.toString());
}
catch(Exception e)
{
throw new ServletException(e.toString());
}
}
public void service(HttpServletRequest req,HttpServletResponse res) throws IOException
{
res.setContentType("text/html");
PrintWriter out =res.getWriter();
out.println("<html><head><title>the first EJB</title></head>");
try
{
Hello bean =home.create();
out.println(bean.GetHello()+"</br>");
out.println("your name is "+myname+"</br>");
out.println("your sex is "+mysex+"</br>");
}
catch(javax.ejb.CreateException ce)
{
out.println("Create Exception caught:"+ce);
ce.printStackTrace(out);
}
catch(java.rmi.RemoteException re)
{
out.println("Remote Exception caught:"+re);
re.printStackTrace(out);
}
out.println("</body></html>");
out.close();
}
}