开发环境: 中我们都是在jboss4.0上部署ejb2.0,使用的是windows操作系统,然后在tomcat中开发web前端,然后在tomcat中
调用jboos中的ejb资源,完成商务逻辑
生产环境: 我们的web前端和ejb都是部署在websphere6.1上,使用的是Linux4操作系统
在本地的开发环境 写的 ejb调用的客户端,可以正确调用到jboss的ejb的资源,可是如果这个客户端要去调用linux上的websphere上的ejb 总是不成功
已知的原因:
1.java.lang.NoClassDefFoundError: com/ibm/CORBA/iiop/ObjectURL
2.不能初始化上下文工厂 com.ibm.websphere.naming.WsnInitialContextFactory
网上找了找一直也没找到这种情况的完整的解决方案
根本原因: 不管是linux 下的websphere 或者是windows 下的websphere 都是使用IBM自己的JDK而不是SUN的jdk
解决方案:
1.由于生产环境的下的websphere的 JDK 使用的1.5的,这个可以到websphere 的安装目录 找到java/bin 使用java -version 看到
2. 由于我们本地的客户端是windows环境,使用的是sun的jdk,需要我们下载IBM JDK1.5,找到了IBM的官网 JDK的下载地址,也只有一个 1.5的jre ,没有jdk,并且我下载了 这个1.5的jre For windows ,发现也不能安装,这个官方jre居然是绑定操作系统的,他会检测bios 中是否是IBM的硬件系统,进一步请教google才知道 IBM根本就没 让JDK1.5 免费下载使用
3.于是找到了一个 部署在windows环境下的websphere6.1,将其java 目录打包,放在本地一个目录下,叫ibm_jdk1.5 ,使用 java - version 看到的版本号 如下图:
4. 在eclipse 中我们 新建立一个项目 叫callejb , 首先我们在eclipse 中增加一个ibm的jdk1.5 ,然后再选择将 callejb 使用的 编译环境 改为 ibm_jdk1.5 ,如下图:
5. 由于需要 初始化websphere 环境 还需要 将websphere 安装目录下的 runtime下的两个jar包 拷贝到项目下
com.ibm.ws.admin.client_6.1.0.jar ,com.ibm.ws.webservices.thinclient_6.1.0.jar
6.使用客户端调用代码 来调用远程的ejb ,客户端代码 就不写了 大同小异
其中 初始化上下文环境的参数 类似这样(我们项目中的 ,ejb是集群)
NETB_PROVIDER_URL=corbaloc::133.64.xx.xx:2810,:133.64.xx.xx:2810
NETB_INITIAL_CONTEXT_FACTORY=com.ibm.websphere.naming.WsnInitialContextFactory
IBM JDK与Sun JDK的不同之处(转载:http://book.csdn.net/bookfiles/222/10022210582.shtml ):
IBM Java软件开发工具包在用法上和Sun的工具包基本相同。只是有少许差别,这就是本节要介绍的内容。
最大的不同点是厂商发布的Java版本。Sun拥有最新的版本。Sun已经开始发布5.0版,而IBM仍在发布Java 1.3版。不用太多注意这些技术上的争端。
运行大部分 代码时,IBM的Java实现比Sun的实现要快。基准与Java虚拟机一样复杂,这一内容已超出了本章的讨论范围(事实上,基准并不能准确预测应用程序 在一种环境下的运行要比在另一种环境下能快多少)。但是,在IBM JVM下运行Java应用程序时,可以看到性能有极大的提高—— 50%~100%级别的提高。
哪一种Java SDK产生字节码文件,这一点无关紧要。不用去管是何种编译器(IBM或Sun)产生的已编译类,应该看运行这些类时性能的提高。更快速的虚拟机和/或更好的即时编译器(JIT),使得IBM运行时的性能有了明显改进。
我们在大部分时间会使用Sun开发工具包和运行库,因为Sun是Java的定义者。如果应用程序对执行速度有严格要求,可以考虑IBM Java运行库。您可以看见其在速度上的优势。
可以注意到 一些不同点。例如,有java和javaw,这两者都调用Java运行库。前者有Java控制台接口,而后者没有。IBM Java SDK带有一个用于CORBA/IIOP的对象请求代理守护程序(Object Request Broker Daemon,ORBD),而Sun SDK没有。但这些对我们来讲并不重要。
在大量的工具中,这些差别很细微,Sun的文档也适用于IBM工具。
IBM的 Eclipse项目(第10章将介绍)提供了一个大型的GUI API库,称为SWT。在第17章阐述。IBM增强了BigDecimal类(com.ibm.math.BigDecimal),这解决了Sun中十进 制算法的众多不足之处。在本书中我们将使用标准Java类(因为它在所有介绍的开发工具包中都是相同的),但是您可以查看IBM的FAQ文档中关于增强的 BigDecimal类的有关内容。在Java 5. 0中IBM类有可能成为官方Sun版本。这个类的主要特点是它可以正确处理舍入和精度,这些在金融和科学应用中极有帮助。查看IBM文档看一看是否有您需 要的信息。
注意Java字节码的差别。可以用Sun Java运行库下载并使用IBM类。