今天又温习EJB3。用Netbeans作了一遍。发现竟然运行不了。靠。难道写了几百遍的东西竟然写错了?检查了一遍,好像没什么错。主要所在Client端lookup的时候能找到jndi资源。但是说我类型转换错误。查资料。看以前的代码。没发现什么异常。代码如下:
InitialContext ctx = new InitialContext();
LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..执行调用
Localnterface是随便起的。代表本地接口。根据EJB3教程上说的。在同一JVM上调用,创建InitialContext时可不用传如Properties。检查了N遍也不知道哪错。于是。很无奈地复制原先的测试程序过来。竟然成功了。靠。程序如下:
Properties prop=new Properties();
prop.put(Context.PROVIDER_URL,"localhost");
InitialContext ctx = new InitialContext(prop);
LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..执行调用
这让我想到了传于不传Properties的区别。原来如果不传Properties。它会去读取服务器上一个叫jndi.properties的文件。该文件默认所没有java.naming.provider.url的定义的。于是我在该文件内定义了java.naming.provider.url=localhost。第一段代码可以运行了。
不过还是有问题。不知道如果不定义的话默认是什么。为什么默认的不行。不得而知。没有帮助文档。各位有资料的话请告诉我阿。
阅读(201) | 评论(0) | 转发(0) |