恶斗EJB(四)

我最不愿意见到的事情发生了,这场恶斗有了续集。

我们的应用实际运行在SUN ONE Application Server上。原本以为在J2EE RI上搞定一切的我可以顺利地把这些东西过渡到我的目标平台。没想到,等待我的却是另一场恶斗。
哎,Java的可移植性啊!

开始阶段异乎寻常的顺利。
虽然SUN ONE Studio是个让人不敢恭维的IDE,但与SUN ONE Application Server配合起来,还是比较愉快的。在向导的帮助下,我很快就建起了一个新的HelloWorld EJB,把它加入一个EJB Module,部署,OK。
几个必要的参数也很快的从文档中被我搜了出来,于是几个参数设成了这样:
    env.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
    env.put("java.naming.provider.url", "iiop://xxx.xxx.xxx.xxx:port");
lookup方法中,我使用了JNDI名称,而舍弃了那个需要繁琐设置的引用名称。
眼前的一切似乎预示着,我只要点一下run,任务就算完成了。

当我点下run的时候,不可思议的一幕发生了,程序僵死在那里,一动不动。
我不敢相信这一切,赶紧用出最原始的招数:加打印信息。打印信息给我的答案是,程序运行到下面这句后停住不动了。
    Context initial = new InitialContext(env);

冷静,冷静,问题出在哪了呢?
率先闯进来的失误是我没有创建一个EJB Stub。解决问题总是比发现问题来得容易,当我在EJB上点下右键的时候,我傻眼了,根本就没有创建EJB Stub的选项。挺住,再看EJB Module,还是没有,怎么会这样?
于是,我开始了新一轮的搜索,使用SUN ONE Studio创建EJB Stub。与此同时,我通过公司的同事向SUN的工程师请教。
SUN网站上的一个例子拯救了我,那也是一个使用SUN ONE Studio创建普通应用调用EJB的例子。
它创建EJB Stub的方法是创建一个应用,把EJB Module加入其中。右键点击这个应用,菜单上会出现“Export Client Support”的选项。
我要的只是一个EJB,为什么非得加入应用?况且EJB Module是可以单独部署的。
人在屋檐下,不得不低头。照猫画虎,当我点击这个选项的时候,蹦出一个对话框“Cannot export client stubs jar for an application this is not deployed”。
这又是什么道理,非得让我必须部署才行。
SUN论坛中的一个帖子给了我这样的答案,部署的时候,SUN ONE Studio会在本地创建一个临时目录,里面存放着部署的东西,也就是我们常说的EAR文件,创建EJB Stub实际上就是到那里找到这个EAR文件,根据它进行创建。我通过实验证明,只要在把应用服务器上部署了这个应用,即便把临时目录下的东西都删了,它还是会去创建一个临时目录存放这个EAR文件,然后再创建EJB Stub。
不管怎样,EJB Stub创建出来了。
这时,SUN工程师的应答也来了。我又得到了两种得到EJB Stub的方法。
当EAR文件部署到应用服务器上之后,这个应用的目录下就会产生一个Stub的文件,可以把它拿过来。另外在SUN ONE Studio中,右键点击EJB的时候,会有一个“Create New EJB Test Application...”的选项,通过它绕个弯子,也可以得到EJB Stub。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值