Glassfish v3 jndi的一点发现
今天兴起,想玩一玩Java EE 6.0,于是把Netbeans6.8给下载下来了。(好像是要快一些了。)
然后写了一个EJB3的模块(HelloWorld的无状态会话Bean),部署到它自带的Glassfishv3的服务器里。
但是问题出现了,我自己建了一个Java应用程序来,想通过JNDI的方式来访问这个EJB程序。
还是按照老规矩嘛:
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { // TODO code application logic here Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost"); //host props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); //EJB Port Context ctx = new InitialContext(props); HelloBeanRemote hr = (HelloBeanRemote) ctx.lookup(HelloBeanRemote.class.getName()); System.out.println(hr.getClass().getName()); System.out.println(hr.sayHello("zbs")); } }
然后就去找JNDI需要的SPI文件,按照以前的规矩是:Glassfish的lib目录下,包括javaee.jar,appserv-rt.jar,appserv-ext.jar和appserv-deploy-client.jar。但是,我发现除了javaee.jar,appserv-rt.jar以外,其它的没有了。奇怪!
同时,我很好奇的打开了appserv-rt.jar文件来看一下,发现里边什么都没有,就在META-INF下面有一个pom.xml和pom.properties,没有任何的class文件,我心里暗想:这还搞个屁啊!
但是,我还是把它引入到客户端项目里去了,然后运行以上的Main类,居然跑通了。我就奇怪了,没有任何的类文件,居然JNDI成功找到了资源。但是,如果我把appserv-rt.jar这个文件给单独copy出来(放在另外一个路径下),这就不能访问了,抛出了InitialFactory类没有找到。
难道这个Maven是个什么高级玩意,神奇了。(小弟没以前没玩过Maven,这不禁激起了我学习Maven的兴趣,改天发表一个Maven的学习感言个大家。)。打开pom.xml来看,也没看出什么奇特的。这就是传说中Java EE 6.0 对JDNI的改进吗?
真实奇特!
作者: throne212
声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
已有 6 人发表回复,猛击->>这里<<-参与讨论
JavaEye推荐
- 北京:高薪招聘Java搜索开发工程师
- 上海:月薪1-2万诚聘资深PHP开发人员
- 成都:月薪5千到1万招聘Java开发工程师
- 北京:手机之家网站诚聘PHP程序员
- 上海:天会皓闻诚聘CTO技术总监
- 上海:高薪诚聘Python开发人员
- 上海:天会皓闻诚聘资深Java架构师
作者:Fervour
出处:http://fervour.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://fervour.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。