问: 我在使用 WSAD 5.1.1。与 Sun JSF 1.1 发布对应,WSAD 中支持 JSF1.1 的 RAD 组件何时才能用于产品应用? (由 Jay B. 提出)
答: IBM 近期还没有转向 JSF 1.1 的计划,因为原来的实现(WebSphere Studio 5.1.2 中所附带的)包括了对 JSF 1.1 中缺陷的更正。采用 JSF 1.1 对于 IBM 已经发布的代码来说是多余的。应当提醒的是 IBM 是 JSF 工程主要的代码提供者,并且 IBM 在 WebSphere Studio 5.1.2 中附带的更正是算作 JSF 1.1 一部分的。当 JSF 经过一段时间的继续发展以后,IBM 将会采用新的版本。
问: 合适的 WSAD 和 Portal Toolkit 开发环境是什么样子的?我们的团队必须在 Portal Server 4.2.1 上部署应用程序。我们也正在使用 Rational XDE。计划在 2005 年 2 月将整个产品转向 WAS 5.1。我们将使用 Struts 并将考虑使用 JSF。
我们是否能使用 WSAD 5.1.2 加上 Portal Toolkit 5.0.2.2?我希望能在开始向 Portal Server 4.2.1 部署时,使开发人员的生产率最大化。请问您推荐什么样的 WSAD 和 Portal Toolkit 开发环境呢?
答: 要向 WebSphere Portal 4.2.1 部署,您可以使用 WebSphere Studio 5.1.2,并使用 WebSphere Portal 4 测试环境配置。WebSphere Studio 向后兼容 4 版本的 WebSphere Portal。然而,与对应于 WebSphere Portal 5 的版本 5 的 Unit Test Environment 不同,您需要单独安装 WebSphere Portal 4 UTE。像 JSF 等一些特性在版本 4 的 WebSphere Portal 中并不可用。此外,您也不能使用 J2EE 1.3 API 或者 JSR 168 Portlet 规范。一旦您移向 WebSphere Portal 5.0.2,就可以构建基于 JSF 的 portlet 了。
一旦您移向 5.1 版本的 WebSphere Application Server,就可以使用 JSF 特性了。然而,在您的环境下,使用 IBM Portlet API 的 Struts 应该是非常好的的解决方案,因为它同时被版本 4 和 5 支持。然而,版本 4 的 Struts 支持是基于 1.0 的,而版本 5 是 Struts 1.1。您可能需要对 Struts 代码进行少量的迁移以使用 Struts 1.1。
问: 我正在从 WAS 4 向 WAS 5 迁移。虽然没有任何编译错误,但是当我测试应用程序时,在控制台上打印出如下错误:
[Servelt Error]-[BF02SPINSLoginServlet]:
Failed to load servlet:
java.lang.NoClassDefFoundError:
com/ibm/ejs/models/base/config/applicationserver/WebModuleRef
at java.lang.Class.newInstance0(Native Method)
at java.lang.Class.newInstance(Class.java.262)
at java.lang.Class.Instantiate(Beans.java.233)
at java.lang.Class.Instantiate(Beans.java.77)
at com.ibm.ws.webcontainer.webapp.WebAppServletManager.loadServlet
(WebAppServletManager.java.188)
我试图在 class path 中添加 ws-base-config,但还是出现问题。
答: 迁移 J2EE 应用程序和服务器有时候是需要技巧的。没有更多的信息,是很难诊断您的问题的。J2EE 1.2 应用程序应该可以不作任何修改在 WebSphere Application Server 上运行的。确保服务器包含的必要的配置资源。例如,对于 J2EE 1.2 应用程序,确保配置了一个 WebSphere Application Server 4 数据源。
如果您的的迁移包括了对 J2EE 应用程序从版本 1.2 到 1.3 的升级,可以参阅 Migrating to WebSphere V5.0, An End-to-End Migration Guide。
我建议在 WebSphere Application Server 5 上运行版本 1.2 的 J2EE 应用程序,以消除任何服务器配置的问题。然后您可以集中精力进行应用程序迁移。
问: 在我编写应用程序时,是否可以在 SWING 上使用 JSF(或者反过来)?是否有这样的成功案例?
答: JSF 主要还是一个运行 J2EE Web 应用程序的 MVC 框架。JSF 组件模型的意图是帮助开发人员使用 RAD 工具来开发 Web 应用程序,这些工具是胖客户端应用程序开发人员所习惯使用的。尽管您可以创建自定义的 render 工具包来扩展 JSF,以处理 来自服务器的胖客户端控件,JSF 的目标或者基于 Web 的应用程序。您应该考虑回答这样的问题:“我是要构建一个胖 GUI 的应用程序还是一个基于 Web 的系统?”
问: 我现在正在设计一个应用程序,考虑使用 Struts 还是 JSF。我应该用什么样的标准在两者之间选择?
答: 这是一个普遍的问题。问题 1 的答案可能是有帮助的。此外,考虑以下方面:
·计划中的部署日期是什么时候?如果需要立即部署,那么应该选择 Struts。如果部署的时间比较远,应该选择 JSF。
·您的开发人员技术水平如何?采用他们擅长的 RAD IDE 类型的方法,或者采用他们更喜欢的手工编程方式。您的视图开发和控制器开发是否由不同的开发人员来完成?我一直认为应该考虑他们开发团队适合的水平。
·您的控制器逻辑复杂程度如何?您的页面复杂程度如何?Struts 支持复杂的控制器逻辑(使用输入的逻辑对导航有主要的影响)。JSF 更擅长于复杂的页面逻辑(需要丰富的事件模型和模型同步的许多组件)。
·您有什么类型的模型(EJB、JavaBeans、JDBC 等等)?向您的 JSF 供应商核对被支持的数据组件。例如,WebSphere Studio 将其简化为直接把 SDO 或 JavaBean 对象拖到页面上合适的位置。
·您是从零开始构建新的页面/Web 应用程序,或者重用/迁移现有的应用程序?如果您有使用 Struts 实现的现有页面或现有应用程序,那么您必须考虑迁移的代价。
·供应商支持的重要性如何?JSF 和 Struts 同时被 IBM 支持。
·您的企业应用程序将有什么类型的客户机?(Web Based、HTML、XML、Mobile、GUI 等等)
问: 我正在使用 WebSphere MQ 5.3 Publish/Subscribe 功能。我如何使用 WebSphere MQ 5.3 在服务器和客户机计算机上配置代理拓扑(broker topology)?以及,我如何创建主题层次以便利用 WebSphere MQ 提供的这个特性?
答: 当 WebSphere MQ 和 WebSphere Application Server 一起使用时,有许多拓扑选项设置。在 WebSphere MQ JMS 提供者那里设置 Topic Connection Factories 和 Queue Connection Factories。
以下的书籍和文章包含您所需要的信息:
·Enterprise Messaging using JMS and IBM WebSphere··
·IBM WebSphere: Deployment and Advanced Configuration
·JMS Topologies and Configurations with WebSphere Application Server and WebSphere Studio Version 5
关于层次的话题,JMS 并没有规定内容如何被组织成主题层次。这是一个和具体提供者相关的方面。在 MQ JMS 中,主题被安排成树状层次。您必须在 JNDI 命名空间中注册 Topic,您不能在 MQ 中执行创建任务。当某一特定主题的发布者或订阅者被第一次创建时,代理例示主题。