javax.naming.NoInitialContextException是什么错误?

干饭人之路 2009-09-02 03:52:06
在学习ejb的时候,抄书上的代码,如下:

package helloworld;

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;

public class HelloClient {
public static void main(String[] args) throws Exception{
Properties props=System.getProperties();
Context ctx=new InitialContext(props);
Object obj=ctx.lookup("examples.ejb21.HelloHome");
HelloHome home=(HelloHome) javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
Hello hello=home.create();
System.out.println(hello.hello());
hello.remove();
}
}


运行时提示如下:
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at helloworld.HelloClient.main(HelloClient.java:21)
Java Result: 1
请问什么原因???这个错误应该不是ejb的问题吧,应该是client的代码的问题吧?
...全文
2597 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
round123_rr 2012-10-28
  • 打赏
  • 举报
回复
因为你是在main方法里面运行的,而这个必须要在tomcat环境中才能运行,所以你在tomcat运行,就不会报错了
qingkangxu 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ecardttt 的回复:]
我用的weblogic9.2
[/Quote]

你按照你的[ejb3.0测试问题。]这个帖子我回答你的那个进行修改就OK了..
windforcecn 2009-09-04
  • 打赏
  • 举报
回复
EJB本身就是一次service

你用你的weblogic先部署一个ejb

然后你用你的客户端去call它
干饭人之路 2009-09-04
  • 打赏
  • 举报
回复
我用的weblogic9.2
zhuchengyi1987 2009-09-04
  • 打赏
  • 举报
回复
系统变量没有设置,导致InitialContext初始化失败。
qingkangxu 2009-09-02
  • 打赏
  • 举报
回复
你用的什么服务器?
halleluia007 2009-09-02
  • 打赏
  • 举报
回复
lz的事例程序我也见过,当时也是这样的错误。不是ejb,仅仅是jndi。
到现在我也不知道是什么原因
yang105 2009-09-02
  • 打赏
  • 举报
回复
貌似配置文件有问题 ,
qhfu 2009-09-02
  • 打赏
  • 举报
回复
ejb2.1有点老,
按照我用ejb3的经验, 如果是在eclipse 里面跑的话, EJB 部署在server 上面, 起server ,把server 的runtime 加到 这个普通java 应用的path里面,
就能访问 container里面的对象了

yong 默认的
Context就可以
sxq129601 2009-09-02
  • 打赏
  • 举报
回复
EJB是不能用main调用的,要用服务器jboss或支持EJB的服务器,调用时分local或remote2种方式,一般2个接口要写
closewbq 2009-09-02
  • 打赏
  • 举报
回复
老紫竹说的对,你不能通过main函数来直接处理,
你必须通过页面,来调用方法访问,才行。
老紫竹 2009-09-02
  • 打赏
  • 举报
回复
InitialContext 是要在应用服务器的上下文里才有的。
你在普通的应用程序里怎么行!
放到tomcat里面运行看看吧!
lzh_me 2009-09-02
  • 打赏
  • 举报
回复
ejb,没接触过。帮你顶//
看错误貌似是数据连接池的错误。是不是tomcat之类的没配置。

67,513

社区成员

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

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