恶斗EJB(三)

原创 2004年10月11日 11:52:00

一切都结束了吗?别急,刚到再接再厉的好时候,难道你不觉得有了IP,再有个端口就更好了吗?遗憾的是,文档没有给我们答案。
以前面的结果为契机,我们继续向前。
端口常与IP齐舞,那我们就从“org.omg.CORBA.ORBInitialHost”出发。既然它能起作用,显然代码里应该有这个字符串,搜!
不出所料,在它身边,“org.omg.CORBA.ORBInitialPort”出现了。
在代码中再加一段:
    System.setProperty("org.omg.CORBA.ORBInitialPort", "1050");
如果测试的话,使用1050和没使用几乎没什么区别,因为它是缺省端口。改一下容易,但也要同时改了server的端口,才能验证我们的想法。
有了前面的探索,找到server的配置简单许多。最终我将目标锁定在config/orb.properties上。一个port和一个host。改动port,重新启动server,从打印出来的信息,我确信自己的改动是成功的。
client,跑!OK!

port我们已经知道了用途,但那个host呢?难道启动还能绑到别人的IP不成。强烈的好奇心让我暂时偏移了原来的轨道,改动IP,没什么,它依然能够启动,关了吧!
发现问题了!
关掉的不是这台机器的server,而是由host指定的那台机器上的server,原来它是干这个的。

回到原来的路上。
这里已经有了IP和端口,在Context.PROVIDER_URL中指定的URL也涉及到IP和端口,意义何在呢?
删了它,试一下。代码居然仍然运行良好。

再来看一下HelloWorldAppClient.jar,把它加入classpath之后,我们几乎忘了它的存在。
在J2EE Tutorial中,HelloWorldClient也被打到了这个JAR文件中,我们自己编写就是一个client,那么这个client有作用是什么呢?事实证明,它是标准的托,没用,删了它对大局无碍。
现在看看HelloWorldAppClient.jar,只有与EJB紧密关联的类,清净不少啊!

还有什么问题呢?
还记得我们在开始的时候,将引用名称改成了JNDI名称吧!
我想把它改回来。
同样以异常起步,寻着调用逆流而上,一步一步解决出现的问题。
对比直接用runclient运行,很容易就可以找到二者的差异,大踏步向前。
runclient其实只是一个批处理文件,其中我最核心的一句简化一下就是下面这个样子:
%JAVA_COMMAND% com.sun.enterprise.appclient.Main %*
%JAVA_COMMAND%就相当于我们常用的java命令,那实际上这一句就是运行com.sun.enterprise.appclient.Main。
同直接运行相比,二者之间的差别肯定是runclient在前期设置了一些东西,才使得代码最终可以运行良好,所以,直接调用就需要自己完成这一些设置的工作。

当我在代码中加入一些新的代码后,我决定放弃。
并非问题无法解决,而是从差别中查找出来的一些设置方法同J2EE RI中的一些类紧密关联在一起。如果说前面设置属性的方式是我可以接受的,那么这里就完全破坏代码中的那种美感。这样,即便最终可以完成,那也已经失去应有的意义。

想来,我最初“调用远程EJB”的目的已经达到了,而在我将来的代码会运行在应用服务器上,这些设置工作应用服务器可以替我很好的完成,我也就不必理会了。

最后,我要告诫一下对有兴趣尝试一下的朋友,前面所有的代码都是在J2EE RI上完成的,具体的应用服务器之间还是有差别的。
好了,一场恶斗就此结束。

恶斗EJB(四)

我最不愿意见到的事情发生了,这场恶斗有了续集。我们的应用实际运行在SUN ONE Application Server上。原本以为在J2EE RI上搞定一切的我可以顺利地把这些东西过渡到我的目标平台。...
  • zlsunnan
  • zlsunnan
  • 2004年10月11日 11:53
  • 1573

恶斗EJB(五)

SUN工程师的回复中,我得到了另外一个有用的信息,在SUN ONE Application Server的安装目录下的samples/rmi-iiop/simple有一个完整的普通应用调用EJB的例子...
  • zlsunnan
  • zlsunnan
  • 2004年10月11日 11:53
  • 1182

恶斗EJB(一)

虽然近来EJB 3.0已经吵得沸沸扬扬,但作为EJB 3.0根基的JDK 1.5还不知道什么时候正式发布,享受EJB 3.0带来的便利指不定是在什么时候,眼下我们拥有的还只是麻烦的EJB 2.0。终于...
  • zlsunnan
  • zlsunnan
  • 2004年10月11日 11:48
  • 1469

恶斗EJB(二)

我们的最终目的是在不同的机器上调用EJB,下面就该体验分布式了。在另外一台机器上,架起一个Server,把EJB部署上去,然后改动client代码中的IP,准备,跑!成功了吗?我期望的是失败。如果你看...
  • zlsunnan
  • zlsunnan
  • 2004年10月11日 11:50
  • 3086

EJB三种bean

在EJB中定义了三种bean,分别是会话bean ,实体bean,和消息驱动bean。很显然,会话bean,就是用来管理会话相关(一次服务器请求)相关信息的。实体bean,就是在管理数据持久化的bea...
  • zhanghongjie0302
  • zhanghongjie0302
  • 2015年11月29日 23:02
  • 1644

EJB的优势和使用场景

EJB的优势和使用场景 即使在EJB 2.0备受诟病的时期,笔者也从不掩饰自己对EJB的喜爱,因为它确实体现了一种非常优秀的设计思想和理念。即使在EJB饱受争议的时期,笔者也一直希望大家用更理智的眼...
  • li_xiao_ming
  • li_xiao_ming
  • 2016年10月12日 08:32
  • 8997

【EJB基础】开发一个简单的EJB应用程序

为了能开发一个简单的EJB应用程序,配置Jboss就快配置了一星期,都快哭了。终于成功了。接下来总结一下开发EJB应用程序的步骤。 第一步,在myEclipse中配置JBoss。 我刚开始下了个J...
  • u010539352
  • u010539352
  • 2016年03月11日 20:15
  • 1971

EJB系列(三)——EJB事务管理

首先EJB Session Bean从功能大可分为两类: 1、Dao:用于封装底层的实体和JPA,访问实体,可称为EAO对象(Entity Access Object) ,本质上就是三层中Dao层。 ...
  • Daybreak1209
  • Daybreak1209
  • 2016年01月20日 20:42
  • 848

javabean与EJB的使用方法

javabean访问EJB的方法: 1.定位本地接口:为定位特定的本地对象,客户需要使用JNDI ①Context ic = new InitialContext(); InitialConte...
  • zlb824
  • zlb824
  • 2011年12月09日 16:33
  • 1025

今天在Eclipse中建立Servlet中调用EJB成功!

昨天看了网上的关于在Eclipse中建立EJB的文章,收获很大.自己也照猫画虎的写了一个,居然能够运行.但只是在命令行下运行的.后来想在servlet里调用,总也没有成功.今天又看了一篇关于在Ecli...
  • jiayp004
  • jiayp004
  • 2004年08月13日 09:59
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:恶斗EJB(三)
举报原因:
原因补充:

(最多只允许输入30个字)