开发环境:中我们都是在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类。