现在的位置: 首页 > 综合 > 正文

EJB3.0异常总结— Need to specify class name in environment or system property,

2019年09月16日 ⁄ 综合 ⁄ 共 1284字 ⁄ 字号 评论关闭

异常:
 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
  原因:
  1.没有写入jndi.properties.
  2.Need to specify class name in environment or system property. 的 
   意思就是找不到你的EJB环境变量. 换句话说就是你的客户在使用lookup   
   的时候. context没有设置对.
  3.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
     使用的是代码InitialContext     
     ctx=new InitialContext(props);的方式,不存在jndi配置文件不对的问 
    题,最后想起之前一个教程里的一句命名空间的话,于是登录jboss控制  
    台,找到部署的ejb,前面一个java提醒鸟我,将代码里lookup中参数前  
    面加上java:,搞定。
  
 public class EjbClient {  
    public static void main(String[] args) {  
        Properties props=new Properties();  
        props.setProperty

("java.naming.factroy.initial","org.jnp.interfaces.NamingContextFact

ory");  
        props.setProperty

("java.naming.provider.url","localhost:1099");//或者

jnp://localhost...也可  
        props.setProperty("java.naming.factory.url.pkgs", 

"org.jboss.naming:org.jnp.interfaces");//此行必须有  
        try{  
            InitialContext ctx=new InitialContext(props);  
            HelloWorld helloworld=(HelloWorld)ctx.lookup

("java:HelloWorldBean/remote");//前面的java是关键  
            System.out.println(helloworld.sayHello("jack"));  
        }catch(NamingException e){  
            System.out.println("error:"+e.getMessage());  
        }  
    }  
}  

抱歉!评论已关闭.