jboss 配置jndi的问题

vvpaper 2005-09-07 05:51:59
我用的是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();
}

}

...全文
1043 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqsls 2006-05-18
  • 打赏
  • 举报
回复
解决了没?说说看哪,我也是得
火山企鹅 2005-09-21
  • 打赏
  • 举报
回复
我也想知道为什么,我的也出现这样的问题
delphi2java 2005-09-11
  • 打赏
  • 举报
回复
把:/jboss/bin/shutdown.jar加到classpath中!
crazycy 2005-09-11
  • 打赏
  • 举报
回复
2 觉得没有问题;你部署.ear包了么?
crazycy 2005-09-11
  • 打赏
  • 举报
回复
1 META-INF下的jboss.xml就是了
jboss-service.xml好像是与web service挂钩的
vvpaper 2005-09-07
  • 打赏
  • 举报
回复
非常感谢,但还是不行啊
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, "localhost:1099");

我改成了你说的样子,但还是报错:
javax.servlet.ServletException: javax.naming.NameNotFoundException: Hello not bound
我怀疑是配置文件不对,是不是只需要配置jboss.xml,ejb-jar.xml这两个就可以了,不需要配置其他吗?
可否把你的配置文件贴出来看看
另外我是部属在default下的,不是all
启动jboss的方法就是双击/bin/run.bat
不知是否正确
guyungong 2005-09-07
  • 打赏
  • 举报
回复
看起来好象没问题。我这里也差不多有这样的例子,完全没问题。不过env是这样的:
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, "localhost:1099");

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧