background image

 
五、了解 WebSphere classloader 的体系结构,重新规划共享类库
  1、避免共享类库在多个模块中存在副本
  2、尽量提供一个移植性好的 J2EE 应用程序打包方案,在部署到不同的 J2EE 服务器
时不需要做任何的改动
  3、建议的方案
  对于在 Web 模块中共享的 JAR 文件
  将 JAR 文件移到 WebProject/webApplication/web-inf/lib 文件夹中,这样 JAR 文件会在
构建时被自动装载并在运行时生效
  对于在所有 EJB 模块和 Web 模块中共享的 JAR 文件
  a)将 JAR 文件导入到 EAR 项目的根目录当中;
  b)在 EJB 项目和 Web 项目中通过修改 Manifest 文件来添加对 JAR 文件的依赖关系。
  注意:不推荐通过 J2EE 应用服务器的 CLASSPATH 来添加 JAR 文件,这样会降低应
用程序的可移植性。要避免同时包含 JAR 文件的不同版本,如果原来系统里包含多个版本,
则只保留其中一个即可。
  六、调试子系统
  1、先利用 WebSphere Studio Application Developer 的通用测试客户机(UTC)对服务器端
的 EJB 进行调试
  2、客户端应用程序和服务器端应用程序对接,调试客户端程序
  七、将子系统导出为 EAR 文件,发布到 WebSphere 应用程序服务器中,进行测试
  八、估算移植剩余子系统的工作量,分工完成
  九、集成测试
  常见的问题

 

  一、 对 J2EE 标准的遵循
  几乎没有一个 J2EE 应用程序,在不经过任何改动的情况下,可以运行在 WebSphere 

服务器

§上,其中一个原因就是大多数的应用程序没有完全遵循 J2EE 规范,并且很

多 J2EE 应

服务器

§都在某种程度上放宽了对于应用程序的限制。

  1  

、 何时使用 PortableRemoteObject 进行对象造型

  基于 IIOP 协议,我们需要使用 PortableRemoteObject 来转换返回的 stub 对象,而基于
WebLogic 使用的 t3 协议,这个操作是可选的
  如果 stub 对应的是远程接口,此方法是必要的;如果 stub 对应的是本地接口,此方法
是可选的
  如果在不需要的情况下(例如访问本地接口的 EJB 时)使用了此方法,系统可以正常
运行,但不推荐使用;如果在必需的情况下(例如访问远程接口的 EJB 时)没有使用此方法,
那么系统会抛出 ClassCastException
  2  

、 EJB 引用

  根据 EJB2.0 规范,使用本地的 JNDI 上下文(java:comp/env)来查找 EJB 是必须的。但
是很多 J2EE 服务器对此放宽了要求,在使用全局的 JNDI 上下文时,同样可以正常运行。
然而,WebSphere 则严格遵循了这一约束。
  在部署描述符中需要添加 EJB 引用
  每个 EJB home 都需要绑定一个全局的 JNDI 名称,绑定信息会存放在 ibm-ejb-jar-
bnd.xmi 文件中
  在 WebSphere 中,每个 EJB 引用(ejb-ref)必须绑定一个全局 JNDI 名称;而在 WebLogic