IBM WebSphere® Studio Application Developer 是 VisualAge® for Java™ 和 WebSphere Studio 的后续技术。它由一个公共工作台和一个集成的支持电子商务应用程序的端到端开发、测试和部署的工具集组成。WebSphere Studio Application Developer 集中了 VisualAge for Java 和 WebSphere Studio 最受欢迎的功能部件并将它们与我们最新技术优势结合在一起,同时提供开放标准、工具集成、更大的灵活性以及与现有应用程序集成的能力。WebSphere Studio Application Developer 为电子商务开发小组的每个成员,包括 Web 开发人员、Java 开发人员、业务分析人员、设计师和企业程序员,都提供了集成的开发工具。
在何处查找有关 WebSphere Studio Application Developer 的更多信息
可以在“入门”指南和联机帮助中找到有关使用 WebSphere Studio Application Developer 的信息。在安装 WebSphere Studio Application Developer 之前请阅读“安装”指南。成功安装 Application Developer 后,请阅读“入门”指南并完成“入门”教程。教程将向您介绍工作台、Java 开发、Web 服务和 Web 开发。完成教程后,请阅读这个指南以将您的资源移植到 WebSphere Studio Application Developer。
有关对这个指南的进一步更新,请参考 过渡 Web 页面。
概述
本指南分为以下几节。
从 WebSphere Studio 移植到 WebSphere Studio Application Developer
从 WebSphere Studio 移植到 WebSphere Studio Application Developer 包含下列步骤:
- 为移植创建新的单个服务器阶段。
- 创建 Web 配置描述符文件。
- 导出移植 JAR 文件。
- 将移植 JAR 文件导入 WebSphere Studio Application Developer。
- 设置服务器并测试移植的应用程序。
从 VisualAge for Java 移植到 WebSphere Studio Application Developer
从 VisualAge for Java 移植到 WebSphere Studio Application Developer 包含下列步骤:
- 从 VisualAge for Java 导出 Java 文件和项目资源文件。
- 启动 WebSphere Studio Application Developer 并创建新的项目以包含代码。
- 将 Java 和项目资源文件导入 WebSphere Studio Application Developer。
- 使用
web.xml
编辑器以确保所有 servlet 都已正确定义(仅 Web 项目)。 - 移植您的 VisualAge for Java 项目和工作区构建和执行设置。
- 设置服务器并测试移植的应用程序。
- 将应用程序从 WebSphere Studio Application Developer 部署到 WebSphere Application Server。
- 在多个开发者之间共享 WebSphere Studio Application Developer 项目设置(在移植之后)。
从 WebSphere Studio Application Developer beta 测试版移植
本节包含关于从 WebSphere Studio Application Developer beta 测试版移植的信息。
EJB 移植
将 VisualAge for Java 企业 bean 移植到 WebSphere Studio Application Developer 包含下列步骤:
- 使用 VisualAge for Java EJB Export Tool 将 VisualAge for Java 企业 bean 导出为 1.1 JAR。
- 将 EJB 1.1 JAR 导入 WebSphere Studio Application Developer。
- 生成代码和数据源绑定信息。
- 创建一个服务器配置和实例。
- 将数据源信息添加到配置中。
- 使用新的 EJB 测试客户机测试企业 bean。
本节还包含有关下列内容的信息:
- 移植的项
- 由于 EJB-1.0 规范和 EJB-1.1 规范不同而进行的代码更改。
- VisualAge for Java,版本 3.5.3 EJB-1.0 JAR 对比 VisualAge for Java,版本 4.0 EJB-1.1 JAR 的不同
- 将多个 VisualAge for Java EJB 组移到 WebSphere Studio Application Developer EJB 项目中。
使用第三方外部 JAR 文件
本节包含有关如何在 WebSphere Studio Application Developer 中如何使用外部 JAR 文件的信息。
移植示例
本节包含一些移植示例,它们有助于您学习有关从 VisualAge for Java 和 WebSphere Studio 移植到 WebSphere Studio Application Developer 的更多知识。
- VisualAge for Java JSp™/servlet 样本(LeapYear)
- VisualAge for Java EJB、VCE 和数据库样本(HelloWorld 和 Increment)
- WebSphere Studio Web 样本(YourCo)
第一节 - 从 WebSphere Studio,版本 4.0 移植到 WebSphere Studio Application Developer
本节说明了如何从 WebSphere Studio,版本 4.0(高级版和专业版)移植到 WebSphere Studio Application Developer。
注:下列内容是从 WebSphere Studio,版本 4.0 移植的指导信息。如果想从 WebSphere Studio 的较早版本移植,应该先移植到 WebSphere Studio 4.0,然后再移植到 WebSphere Studio Application Developer。
某些 WebSphere Studio 功能部件(链接管理、高级发布等)在 WebSphere Studio Application Developer 中不可用。有关 WebSphere Studio,版本 4.0 和 WebSphere Studio Application Developer 之间差异的信息,请参考 过渡 Web 页面。
在移植任何 WebSphere Studio 数据之前应该清楚下列限制:
- WebSphere Studio Application Developer 使用基于 XML 的 SQL 编辑器,因此在其中不能使用您的
.sql
文件。 - 不能移植项目发布和阶段信息。
- 不能移植 WebSphere Studio 服务器配置信息。
- 不能移植版本控制信息。
在下列移植过程期间,WebSphere Studio 创建一个 JAR 文件,它包含单个服务器的所有可发布文件和源代码形式的项目文件。在缺省服务器的 publishing 视图中可以看见的所有文件都将会压缩到这个 JAR 文件中。然后可以将这个 JAR 文件导入到 WebSphere Studio Application Developer 中。
移植现有的项目时,在移植期间会丢失所有项目发布和阶段信息。如果阶段具有多个服务器,则只保留发布到缺省服务器的文件。因此,为了移植的目的,将创建一个只有一个服务器的阶段。
移植步骤
第一部分 - 为移植创建一个单服务器阶段
如果在当前阶段中有多个服务器,则通过下列步骤创建一个仅带有一个服务器并且称为 Migration 的新阶段:
- 单击 project => Customize publishing Stages。
- 在 Stage name域中输入 Migration。
- 单击 Add。
- 单击 OK。
- 单击 project => publishing Stage然后从可用的阶段列表中选择 Migration。
- 在 publishing 视图中单击 Insert => Server。
- 输入服务器名称,例如 localhost。
- 更改服务器或更改发布阶段不会传播 WebSphere Application Sever,版本 4.0 的 servlet 映射信息。转至 publishing 视图,对于每个 servlet,单击 properties =>publishing => Servlet Mapping,然后复制实际的 servlet 映射。
第二部分 - 创建 Web 配置描述符文件
- 在 project file 视图中,单击 project => Create Web ConfigurationDescriptor File。
- 选择所有必需的 servlet。
- 选择所有必需的“标记库描述符(TLD)”(Tag library Descriptor (TLD))文件。
- 单击 Create。
本方案中缺省 Web 配置描述符文件名为 serverName_web.xml
和 localhost_web.xml
。除非指定一个不同的位置,否则将 .xml
文件保存在 WEB-INF 目录中。
第三部分 - 导出一个移植 JAR 文件
- 在 project file 视图中,选择 localhost服务器然后单击 properties => publishing => WebApp Web path,输入 Web 路径(上下文根),例如 myWebpath。这还将被用作 WebSphere Studio Application Developer 项目名称。
- 在 project file 视图中,选择 project => Create Migration file。
- 验证 localhost就是选中的服务器。
- 验证
localhost_web.xml
就是选中的 Web 配置描述符文件。 - 单击 OK。
- 缺省 JAR 文件名的形式是
serverName.jar
,在本方案中为localhost.jar
。如果愿意,可以重命名该文件。 - 保存 JAR 文件。
第四部分 - 将移植 JAR 文件导入 WebSphere Studio Application Developer
- 启动 WebSphere Studio Application Developer。
- 创建一个 Web 项目( File => New => project => Web project)。
- 在 project name域中输入 Web 项目名称。这应该与您在第三部分的步骤 1 中指定的名称相同。
- 指定一个新的或现有的 EAR 项目名称,它将包含用于部署目的的新 Web 项目。
- 在 Context Root域中输入在 WebSphere Studio 中创建移植 JAR 文件时指定的 Webapp Web 路径名。单击 Finish。
- 在 Navigator 视图中,选择刚创建的 Web 项目。
- 导入 JAR 文件。
- 单击 File => Import。
- 单击 WAR file。单击 Next。 必须使用 WAR 文件选项来导入 JAR 文件;否则,它将无法正常工作。
- 在 WAR File域中输入到
localhost.jar
的路径或单击 Browse来搜索它。 - 选择您创建的 Web 项目。将自动用您先前指定的值填充 Context Root域。
- 选择先前创建的 EAR 项目。
- 单击 Finish。WebSphere Studio Application Developer 将解压缩
localhost.jar
。
- 可能会有几个未解析的引用或丢失的导入文件。这些将出现在 Tasks 视图中。要改正它,必须修改 Web 项目的 Java 构建路径。
- 在项目上单击鼠标右键,然后单击 properties => Java Build path。
- 单击 libraries选项卡。单击 Add External JARs。
- 从下列目录中导入任何需要的 JAR:
plugins/com.ibm.etools.websphere.runtime/lib
和plugins/com.ibm.etools.websphere.tools/runtime
。
- 在 Navigator 视图中,在项目上单击鼠标右键然后选择 Rebuild project。
第五部分 - 设置服务器并测试移植的应用程序
现在您已准备好测试应用程序了。要在缺省的测试服务器上测试它,请遵循下列步骤:
- 在 EAR 项目上单击鼠标右键。
- 选择 Run on Server。
- 要在另一个服务器运行时环境上测试应用程序,请参考“服务器工具(Server Tool)”功能部件的联机帮助。
第二节 - 从 VisualAge for Java 移植到 WebSphere Studio Application Developer
本节描述了如何从 VisualAge for Java,专业版或 VisualAge for Java,企业版移植到 WebSphere Studio Application Developer。
注:下列内容是关于从 Visualage for Java,版本 3.5.3 或 4.0 移植的指导信息。如果想从 VisualAge for Java 的较早版本移植到 WebSphere Studio Application Developer,在移植到 WebSphere Studio Application Developer 之前,应该首先从 VisualAge for Java 的较早版本移植到版本 4.0(如果有企业 bean 的话)或版本 3.5.3 或 4.0(没有企业 bean)。
版本 4.0 包括一个特殊的移植企业 bean 的工具(EJB Export Tool),因此所有企业 bean 都必须从版本 4.0 移植到 WebSphere Studio Application Developer。所有其它数据可以从版本 3.5.3 或版本 4.0 移植。
注:Instantiations, Inc. 是 IBM 的业务伙伴,它分发了一个称为 “VA Assist Enterprise/J V3.0”的产品,该产品提高了 VisualAge for Java 的生产率,包括增强的导入/导出功能。在版本 3.0 中,Instantiations 已经扩展了这些功能以提供对 VisualAge for Java 和 WebSphere Studio Application Developer 移植和共存的支持。为帮助 VisualAge for Java 客户开始他们的移植,Instantiations 提供了一种免费并且无使用限制的 VisualAge for Java => WebSphere Studio Application Developer 导出功能作为他们有时间限制的 VA Assist Enterprise/J V3.0 评估版副本的一部分。可以 下载该评估版副本。有关 Instantiation 高级共存支持方面的进一步信息,包括文件的完全双向导入/导出、导入/导出集的创建、项目同步和任务自动化,请浏览 Instantiations, Inc.。
VisualAge for Java 和 WebSphere Studio Application Developer 之间的区别
以下是 VisualAge for Java 更改的部分列表。
- Enterprise JavaBeans™(EJB)规范级别已经从 1.0 更改到 1.1。
- 支持的 Java 2 平台的级别已经从 1.2 更改为 1.3。
- VisualAge for Java Tools ApI 已经被 WebSphere Studio Workbench 插件体系结构所替代。
- VisualAge for Java XML 工具已经被 WebSphere Studio Application Developer XML 工具所替代。
- VisualAge for Java 版本控制已经被“源代码管理(SCM)”插件的 WebSphere Studio Workbench 支持所替代。
- VisualAge for Java 项目概念已经被 WebSphere Studio Application Developer 项目的多个类型所替代。
有关 VisualAge for Java 和 WebSphere Studio Application Developer 之间区别的更多信息,请参考 过渡 Web 页面。
VisualAge for Java 与 WebSphere Studio Application Developer 共存
某些 VisualAge for Java 开发工具在 WebSphere Studio Application Developer 中并没有相应的工具。如果愿意,可以继续使用 VisualAge for Java 开发应用程序的某些部分,然后将您的代码部署到 WebSphere Studio Application Developer 中,其方法与从 VisualAge for Java 部署到 WebSphere Application Server 中的方法完全一致。这允许您将所有应用程序资源都一起放在 WebSphere Studio Application Developer 工作台中,以便最终部署到测试或生产服务器。
有关将 VisualAge for Java 和 WebSphere Studio Application Developer 一起使用的更多信息,请参考 这篇有关共存文章。
WebSphere Studio Application Developer 中的团队支持
在“安装”指南和联机帮助中也有关于 WebSphere Studio Application Developer 中团队支持的信息。
第一部分 - 从 VisualAge for Java 导出 Java 文件和项目资源文件
这里不支持从 VisualAge for Java 资源库“整体(bulk)”移植带版本化的项目和资源。只能移植您的 VisualAge for Java 工作区中的项目和资源。如果想将项目或资源的版本化的副本移植到 WebSphere Studio Application Developer,则必须将它放入 VisualAge for Java 工作区,然后再移植它。
注:如果您的项目包含多种数据(例如,企业 bean 和 Java 源代码文件),则应该根据数据类型将它们分割成不同的 JAR。
通过下列步骤将您的项目导出到一个 JAR 文件中:
- 如果您想导出的项目当前不在 VisualAge for Java 工作区中,则现在将它们添加到工作区。
- 在 VisualAge for Java Workbench 窗口中,选择项目,单击鼠标右键然后单击 Export。
- 选择 Jar file单选按钮然后单击 Next。
- 指定 JAR 文件名称。
- 选择
.java
复选框来导出 Java 文件,选择 resources复选框来导出资源文件。 - 按需要填充其它域。有关如何完成该任务的更多信息,请参考 VisualAge for Java 联机帮助。
第二部分 - 启动 WebSphere Studio Application Developer 并创建新项目以包含您的代码
启动 WebSphere Studio Application Developer,然后创建适当的项目。下列是一组常规移植指南,它们有助于您确定应该将文件导入到哪一类型的 WebSphere Studio Application Developer 项目中。
- 如果您的代码是 Web 应用程序的一部分,则应该将代码导入 Web 项目:
- 将所有 Java 文件导入 Web 项目 source目录(WebSphere Studio Application Developer 将自动创建基于它们的 package 语句的正确层次结构)。
- 将所有资源文件导入 Web 项目 webApplication目录。
- 如果您的代码就是 Java 代码(例如,将独立运行的应用程序),则应该将代码导入 Java 项目。
- 如果您的代码是企业 bean,则应该将代码导入 EJB 项目。
注:上述内容只是帮助您确定应该使用哪一种类型的 WebSphere Studio Application Developer 项目的一组常规指南。我们建议您阅读 WebSphere Studio Application Developer 联机帮助,并且在创建任何项目或导入任何代码之前熟悉不同类型的 WebSphere Studio Application Developer 项目。
第三部分 - 将 Java 和资源文件导入 WebSphere Studio Application Developer
- 打开 WebSphere Studio Application Developer 并且切换至 Resource 透视图。
- 单击 File => Import => Zip file。单击 Next。
- 浏览至相应的 JAR 文件。
- 选择想导入的文件和想包含您的文件的项目或文件夹。
注:在将文件导入 WebSphere Studio Application Developer 时,应该确保它们进入适当的目录。我们建议您阅读 WebSphere Studio Application Developer 联机帮助,并且在导入您的代码之前熟悉不同类型的 WebSphere Studio Application Developer 项目。这将帮助您确定哪一些文件夹应该包含哪一种类型的代码。
第四部分 - 使用 web.xml
编辑器以确保正确定义 servlet(仅 Web 项目)
如果您的应用程序使用 servlet,则需要在 web.xml 文件中定义 servlet-URL 映射。遵循下列步骤:
- 在 Web 透视图中,打开
web.xml
文件,它位于 Web 项目的webApplication/WEB-INF
子目录中。 - 单击 Servlets选项卡。
- 单击 Add然后选择 Servlet单选按钮。
- 输入 servlet 名称然后单击 OK。
- 单击 Browse以将 Servlet class值更改成适当的包名称。
- (可选的)显示名称是用于标识 servlet 的简短名称。在 Display name域,输入该 servlet 的简短名称。
- URL 映射定义了一个 servlet 和一个 URL 模式。单击 URL mappings域旁边的 Add按钮,然后输入 URL 映射的名称。
- 保存更改( File => Save
web.xml
)并关闭web.xml
文件。
第五部分 - 移植项目和工作区设置
必须记录下列 VisualAge for Java 设置并在 WebSphere Studio Application Developer 中设置它们:
- 项目类路径
- 资源关联
- 代码格式
- EJB 服务器配置
- WTE 配置
- Java 文件和项目资源文件
项目类路径
在 VisualAge for Java 中,在 Options 窗口的 Resources 页面中设置项目类路径( Window => Options => Resources)。将项目移植到 WebSphere Studio Application Developer 后,可以在项目的 properties 窗口中设置项目的类路径。(在该项目上单击鼠标右键然后选择 properties => Java Build path。单击 libraries选项卡。)也可以在 preferences 窗口中设置类路径变量( Window => preferences => Java => Classpath Variables。)
资源关联
如果设置了文件类型和可执行文件之间的关联,则可以在工作台内打开一个位于工作台外的文件。
在 VisualAge for Java 中,在 Options 窗口中设置资源关联( Window => Options => Resources => Resource Associations)。将资源文件移植到 WebSphere Studio Application Developer 后,可以使用 preferences 窗口来设置资源关联( Window => preferences => Workbench => File Editors)。
代码格式化器(Code formatter)
在 VisualAge for Java 中,在 Options 窗口的 Formatter 页面中设置代码格式化选项( Window => Options => Coding => Formatter)。将代码移植到 WebSphere Studio Application Developer 后,可以在 preferences 窗口中设置代码格式化( Window => preferences => Java => Code Formatter)。
EJB 服务器配置
在 VisualAge for Java 中,在 EJB 服务器的 properties 窗口中设置 EJB 服务器配置。(在 EJB 页面中,选择 EJB => Open To => Server Configuration。选择服务器,在其上单击鼠标右键,然后单击 properties)。将企业 bean 移植到 WebSphere Studio Application Developer 后,可以在 Server Configuration 视图中设置服务器配置。(在 Server透视图中,打开 Server Configuration视图。在服务器上单击鼠标右键然后单击 Open。单击 Data source选项卡。)
WTE 配置
在 VisualAge for Java 中,您的 WebSphere Unit Test Environment 和 WebSphere Application Server 运行时设置位于下列目录中的各种属性文件中: VisualAgeInstalldir/ide/project_resources/IBM WebSphere Test Environment/properties
,其中 VisualAgeInstalldir是产品安装目录。
例如,如果已经按如下所示通过在 session.xml
属性文件中将属性更改为 true 来启用 URL 重写,
,则可以在 WebSphere Studio Application Developer WebSphere v4.0 Test Environment 中配置这个属性。(在 Server 透视图中,打开 Server Configuration 视图,在想要使用的服务器上单击鼠标右键,然后单击 Open。单击 Web选项卡然后选择 Enable URL rewrite复选框。)
<url-rewriting-enabled>true</url-rewriting-enabled>
属性文件 default.servlet_engine
包含 VisualAge for Java Web 应用程序的 <root-uri>
上下文根。当在 WebSphere Studio Application Developer 中创建“Web 项目”时, Create a Web project对话框包含这个数据的 Context root域。
您自己定制的诸如 VisualAge/ide/project_resources/IBM WebSphere Test Environment/hosts/default_host/default_app/servlets/default_app.webapp
文件中的 Web 应用程序设置,应该移植到 WebSphere Studio Application Developer 中的 <您的 WebSphere Studio Application Developer Web 项目>/webApplication/WEB-INF/web.xml
文件。例如,如果修改了 default_app.webapp
文件中的 servlet 名称和 servlet 路径,则应该在 web.xml
文件中进行相应更改。
第六部分 - 设置 WebSphere Studio Application Developer 服务器并测试移植的应用程序
如果应用程序是 Java 项目,则只需要使用 Java 项目的常规 WebSphere Studio Application Developer Run或 Debug支持来测试它。
如果应用程序使用 WebSphere Studio Application Server(Web 项目和 EJB 项目便是如此),则使用内置 WebSphere Studio Application Server 来测试它。这需要创建并启动一个缺省测试服务器。对于 EJB 项目,在 EJB 项目上单击鼠标右键然后选择 Run on Server以运行 EJB Test Client。对于 Web 项目,在 HTML 主页上单击鼠标右键然后选择 Run on Server以启动 Web 浏览器。
有关测试其它类型项目的信息,请参考联机帮助。
第七部分 - 将应用程序从 WebSphere Studio Application Developer 部署到 WebSphere Application Server
如果正在使用 WebSphere Application Server 作为运行时环境,则使用 WebSphere Studio Application Developer 的 Server Tool 功能部件来部署您的应用程序。
第八部分 - 在多个开发人员之间共享 WebSphere Studio Application Developer 项目设置(在移植之后)
可以在 WebSphere Studio Application Developer 开发人员之间共享 WebSphere Studio Application Developer 项目(及其相关设置)。要做到这一点,将项目保存到 WebSphere Studio Application Developer 软件配置管理(SCM)服务器中,然后将它抽取到另一个 WebSphere Studio Application Developer 组成员的系统上。
第三节 - 从 WebSphere Studio Application Developer beta 测试版移植
不应该将由 WebSphere Studio Application Developer beta 测试版生成的任何代码移植到这个产品的最终版本中。不支持从产品 beta 测试版移植到最终版本。虽然不支持,但是在大多数情况下,您应该可以将 beta 测试版的应用程序代码导出到目录结构或 JAR 文件中,然后将它导入最终产品,但是将丢失项目设置,工作区设置以及工具元数据(例如,EJB 映射或者关联)。您将不能移植任何系统生成的代码(例如,EJB 存根),因为它与最终产品不兼容,必须在最终产品中重新生成。无论试图通过本地文件系统或通过软件配置管理(SCM)服务器,都是这种情况。如果尝试将您的代码保存到 SCM 服务器,然后将它移植到 WebSphere Studio Application Developer,这似乎可行,但是,这也可能导致 WebSphere Studio Application Developer 操作异常。换句话说,您应该能手工复制用户编写的源代码,但是不能移动任何 WebSphere Studio Application Developer 内部设置、数据或生成的代码。
第一部分 - 从 WebSphere Studio Application Developer beta 测试版以来的更改
EAR 项目移植
在将 Enterprise Application(EAR)项目中的模块映射成嵌套的 J2EE 项目方面,元数据存储中已经有了一些更改。唯一支持的选项是从 beta 测试版导出 EAR 文件并将 EAR 文件导入 WebSphere Studio Application Developer 的这个版本。
从 beta 测试版以来所做的其它更改
已经将新的 "Module Dependencies" 页面添加到几个项目向导中。这个页面包含您的项目可以合法依赖的所有 JAR 的列表,包括来自 EAR 项目或同一个 EAR 中的 EJB 项目中的 JAR。当从列表中选择 JAR 时,自动更新您项目的清单文件和 Java 构建类路径。一旦创建了项目,可以通过在 Navigator 视图中选择项目并在其弹出菜单中单击 Edit Module Dependencies返回这个页面。
其余的更改:
- 在清单条目中不再需要
/bin
或/webApplication
。 - 缺省情况下,WebSphere Studio Application Developer 使用 COMpATIBIliTY moduleVisiblity 方式。在这个方式中,不需要设置清单条目,因为所有内容都已经是可见的。但是,这很容易在配置编辑器或部署时被更改,所以我们建议您始终使用清单条目。
第四节 ? EJB 移植
本节提供了有关如何将 VisualAge for Java 企业 bean 移植到 WebSphere Studio Application Developer 的指导信息。
EJB Export Tool(EJB Export toll)
VisualAge for Java,版本 4.0 包含一个用于移植企业 bean 的特殊工具(EJB Export Tool)。因此,必须将所有企业 bean 从 VisualAge for Java 的那个版本移植到 WebSphere Studio Application Developer。
建议:使用 VisualAge for Java 4.0 EJB Export Tool 导出之前,您所有的数据库表都应该包含一个表限定符。大多数数据库需要表具有限定符,并且当数据库供应商需要限定符时,WebSphere Studio Application Developer 工作台不处理空限定符。
可以从 VisualAge 开发者园地中 下载 Export tool for EJB 1.1 的修订包。它修复该工具的某些缺陷,包括当一个组与两个或两个以上映射到同两个表或多个表的外键具有关系时,EJB 工具可能遇到的问题。有关这个修订包解决的缺陷的更多信息,请参阅修订包 README 文件。
第一部分 - 移植的项
当移植企业 bean 时将移植下列项:
- 实体 Bean(CMp 和 BMp)
- 会话 Bean(有状态和无状态)
- 查找程序助手(方法和定制查找程序的位置)
- 继承(带有多个级别)
- 关联
- 映射和模式
- 部署和控制描述
第二部分 - 由于 EJB-1.0 规范和 EJB-1.1 规范不同而进行的代码更改
如果正在将您的 1.0 EJB 代码移植到 WebSphere Studio Application Developer,则有一些 EJB 1.1 规范的更改可能影响您的代码。
例如,可能由于 EJB 1.1 的下列更改而导致验证 错误:
- 企业 bean 不能使用
javax.jts.UserTransaction
接口(而使用新的javax.transaction.UserTransaction
接口)。 - 实体 Bean 无法使用
UserTransaction
接口(这在 1.1 中不允许)。 - 实体 Bean 必须在它们的
throws
子句中定义FinderException
。 - 企业 bean 不能抛出
java.rmi.RemoteException
(而可以抛出javax.ejb.EJBException
),但是仍然必须在 EJB 本地和远程接口中定义RemoteException
(这是 RMI 所需要的)。 - 您不能使用
finalize
方法。
还可能由于如下的 EJB 1.1 更改而得到验证 警告:
- 不赞成使用
java.security.Identity
。 - 不赞成使用企业 bean 方法
getCallerIdentity()
和isCallerInRole(Identity)
(而使用getCallerprincipal()
和isCallerinRole(String roleName)
)。 - 不赞成使用企业 bean 方法
getCallerIdentity()
和isCallerinRole(Identity)
(而使用getCallerprincipal()
和isCallerinRole(String roleName)
)。 - 企业 bean 不能抛出
java.rmi.RemoteException
(而它可以抛出javax.ejb.EJBException
)但是仍然必须在 EJB 本地和远程接口中定义 RemoteException(这是 RMI 所需要的)。
应该考虑一些增强特性以符合 EJB 1.1 的更改,例如:
- CMp 企业 bean
ejbCreate(...)
方法应该返回 bean 的主键类(而不是 void)以允许由 bean 管理的 bean,它们是由容器管理的 bean 的子类。 - 实体 Bean 主键现在可以是
java.lang.String
对象。 - 实体 Bean 查找程序方法应该在它们的 throws 子句中定义 FinderException(并且现在可以返回 java.lang.Collection)。
- 新的 HomeHandle 接口和 EJBHome 接口具有新的
getHomeHandle()
方法。 - 检查 JNDI 名称格式(现在支持本地名称空间)。
- 现在有安全性角色,并且现在在方法级别上定义隔离级别(在 EJB 1.0 中定义在 EJB 级别上)。
应该在大体上回顾一下 EJB 1.1 更改,看看其它适当的应用程序更改。有关详细信息,请参考下列出版物和网站:
- Enterprise JavaBeans 规范,v1.1 - 1.3 节 Application compatibility(第 16 页)。
- IBM WebSphere InfoCenter;请参考以下各节:
- Transitioning to Version 4.0。(单击 Application Server AE => Migration => Transitioning to Version 4.0并阅读 Role-based security 一节。)
- Migrating to supported EJB specifications。(单击 Application ServerAE => Migration => 3.3 Migrating ApIs and specifications => 3.3.1Migrating to supported EJB specifications。)
- Migrating from Version 3.x。(单击 Application Server AE => Migration=> 3.2 Migrating from previous products versions => 3.2.2 Migratingfrom Version 3.x。)
- WebSphere Version 4 Application Development Handbook- 第 11 章,Migrating 1.0 EJBs to 1.1 EJBs(第 267 页)。(单击 Chapter 11 => Developing Web Applications with VisualAge for Java => Developing EJBs in VisualAge for Java并阅读 Migrating 1.0 EJBs to 1.1 EJBs一节。)
- programming J2EE ApIs with WebSphere Advanced- 第 5 章,EJB 1.1 code changes(第 113 页)。(单击 Chapter 5 => 5.8 EJB-JAR并阅读 EJB 1.1 code changes一节。)
- 使用 VisualAge for Java for WebSphere Application Server 的 EJB 开发- 附录 B。
第三部分 - VisualAge for Java,版本 3.5.3 EJB-1.0 JAR 对比 VisualAge for Java,版本 4.0 EJB-1.1 JAR 的不同
在 VisualAge for Java,版本 3.5.3 中,可以生成未部署的 EJB 1.0 JAR 或者生成一个已部署的 EJB 1.0 JAR(带有部署代码、存根、绑定代码等)。可以将 EJB 1.0 JAR 导入 WebSphere Application Server,版本 4.0 Application Assembly Tool(AAT)并使用它来生成部署和控制描述符以及运行 EJB Deploy Tool以将部署代码、存根等生成为 EJB 1.1 格式 JAR(EAR)。上述步骤的直接结果是您能拥有一个可以在 WebSphere Application Server,版本 4.0 中运行、并因此还可以在 WebSphere Studio Application Developer 中运行的已部署的 JAR(因为其 WebSphere 测试环境是一个 WebSphere Application Server,版本 4.0 服务器)。但是,运行时执行并不意味着正在进行中的开发能力。
可以将以前生成的 Java 代码包括在相应的 EJB JAR 中并将它们导入 WebSphere Studio Application Developer,WebSphere Studio Application Developer 将解析并理解 EJB 会话支持、安全性信息、查找程序信息和组装描述符(const 方法等)。但是,将丢失所有扩展(类继承和外键关联)和映射以及模式信息。只有使用 VisualAge for Java,版本 4.0 EJB Export Tool 才能保留它们以创建包含映射、模式 XML 信息以及扩展 XML 信息的 EJB 1.1 JAR。另外,1.0 企业 bean 中生成的存根类的名称与 1.1 企业 bean 中的也不一样。直接结果是 EJB-1.0 JAR 和 EJB Deploy ToolEJB-1.1 JAR 都不保留允许在 WebSphere Studio Application Developer 的正在进行的开发中使用它们的基本设计元数据。
VisualAge for Java,版本 4.0 EJB Export Tool生成一个 EJB 1.1 JAR,它包含所有 EJB 设计元数据,包括映射和模式信息以及扩展(类继承和外键关联),这样就可以立即在 WebSphere Studio Application Developer 中继续开发并且在任何需要它们的时候重新生成所需的部署代码。这是将 VisualAge for Java 企业 bean 移植到 WebSphere Studio Application Developer 唯一受支持的方法;并且使用 VisualAge for Java,版本 4.0 EJB Export Tool是可用于 WebSphere Studio Application Developer 中正在进行的 EJB 开发的唯一方法。
第四部分 - 将多个 VisualAge for Java EJB 组移动到 WebSphere Studio Application Developer EJB 项目中
在 VisualAge for Java 中,您可以有多个 EJB 组,每个组用于组内继承或关联。一般情况下,您会把每个 VisualAge for Java EJB 组导出到匹配的 JAR 中(使用 VisualAge for Java 4.0 EJB Export Tool),然后将该 JAR 导入到匹配的 WebSphere Studio Application Developer EJB 项目中。
WebSphere Studio Application Developer EJB 项目与 EJB 模块相对应。在不需要组内继承或关联时,您可能希望将 EJB 组保持为独立的 EJB 项目 - 可以关闭单个项目从而将总体内存需求保持在较低水平。通过使用 WAR 和 EAR 文件,WebSphere Studio Application Developer 具有企业级分组的概念,因此可以在逻辑上以这种方式组合几个 EJB 组,然后将它们作为单个单元来部署。
如果将多个 EJB 组导入同一个 EJB 项目,则可能无法正确合并它们中的任何 XML(最后导入的组覆盖前面导入的组)。
第五部分 ? 移植企业 bean
下列步骤概述了如何移植企业 bean。下面提供了关于如何执行这些步骤的详细信息:
- 使用 VisualAge for Java,版本 4.0 EJB Export Tool 将它们导出为1.1 JAR。
- 将它们导入 WebSphere Studio Application Developer。
- 生成代码和数据源绑定信息。
- 如果还没有为测试服务器创建 WebSphere Studio Application Developer 服务器配置,则创建它。
- 将数据源信息添加到服务器配置中。
- 使用新的 EJB 测试客户机来测试企业 bean。
导出企业 bean
- 在 VisualAge for Java,版本 4.0 中,将 "Export Tool for Enterprise JavaBeans 1.1" 功能部件添加到工作区中。
- 在“工作台”的 EJB 页面中,在想要导出的 EJB 组上单击鼠标右键,然后单击 Export => EJB 1.1 JAR。
- 按需要填充域(确保选中了
.java
复选框)然后单击 Finish。
将企业 bean 导入 WebSphere Studio Application Developer
- 在 WebSphere Studio Application Developer 中创建一个新的 EJB 项目和一个新的 EAR 项目。将自动切换至 J2EE 透视图。
- 选择 File => Import => EJB JAR file。单击 Next,然后选择 JAR 文件、EJB 项目和 EAR 文件。单击 Finish。
- 如果遇到任何错误(将在 Tasks视图中列出它们),则参考下面的 已知问题和解决方法一节以解决问题。
- 导入 EJB 文件后,请遵循 查找 EJB 信息中的指导信息以帮助您查明在何处可以找到 EJB 和方法属性、模式以及映射等。
生成代码和数据源绑定信息
- 在 J2EE 视图中,展开 EJB Modules文件夹然后选择新导入的 EJB JAR。
- 在 EJB JAR 的弹出菜单中单击 Generate => Deploy and RMIC Code。选择为所有 bean 生成代码。
- 在 EJB JAR 的弹出菜单中单击 Open With => EJB Extension Editor。
- 在 EJB 扩展编辑器中单击 Bindings选项卡。
- 选择您的 EJB JAR 并输入 Datasource JNDI 名称。记录这个名称,因为以后在测试服务器实例中配置数据源时将使用它。
- 保存更改并关闭 EJB 扩展编辑器。
创建服务器配置和实例
- 切换至 Server 透视图。
- 单击 File => New => Server project。
- 在 project name域中输入 ServerTest。单击 Finish。
- 在 Navigator 视图中选择 ServerTest。在其弹出菜单中单击 New => Server Instance and Configuration。
- 输入服务器名称,例如 MyServer,然后在 Folder 列表中选择 ServerTest。
- 在 Server instance type域中单击 WebSphere V4.0 Test Environment。在 Template域中单击 None。
- 单击 Next。指定服务器端口号为 8080。
- 单击 Finish。
此时将创建一个新的服务器配置和实例。
将 JDBC 数据源添加到 WebSphere 4.0 服务器配置中
- 在 Server Configuration 视图中,展开 Server Configurations然后选择您的服务器。
- 在其上单击鼠标右键,然后在弹出菜单中单击 Open。
- 单击 Data source选项卡。
- 在 JDBC 驱动程序列表(JDBC Driver list)中,选择适当的数据库驱动程序(例如,如果使用 DB2®,则选择 Db2JdbcDriver),然后单击 Edit。
- 验证 Class path域包含指向
db2java.zip
的正确路径。单击 OK。 - 如果使用的不是 DB2,则添加一个新的驱动程序 - 请确保使用了数据库供应商提供的 J2EE JDBC 驱动程序。
- 选择 JDBC 驱动程序,然后单击 Data source域右侧的 Add按钮。
- 在 Add a data source对话框中,输入数据源名称。在 JNDI 域中,输入与您在第 5 步 生成代码和数据源绑定信息中使用的名称相同的名称。输入您的数据库的名称,然后单击 OK。
- 保存所做的更改。
使用 EJB 测试客户机测试企业 bean。
- 在 Server Configuration 视图中,展开 Server Configurations,然后选择服务器。在其上单击鼠标右键,然后单击 Add project。选择含有您的 EJB 模块的项目。
- 在 Servers 视图中,选择服务器实例。在其上单击鼠标右键,然后在弹出菜单上单击 Start。
- 该项目将被发布,服务器将会启动。稍过片刻,单击 Console选项卡以查看控制台窗口。您将会看到一条表明已为电子商务打开缺省服务器(Default Server)的消息。拖动控制台滚动条以验证已启动了 EJB JAR WBOnline。
- 在 J2EE 视图中,展开 EJB Modules文件夹,选择想测试的企业 bean,在其上单击鼠标右键,然后单击 Run on server。
- 当移植方法查找程序助手时,由于查找程序助手已经移入一个 XML 描述文件,所以它们的接口会消失。由于您的查找程序对象通常要实现该接口,所以这会产生一个问题;因此必须将除去该实现。
- 如果在企业 bean 中使用继承,并且构建了自己的定制查找程序,那么由于在 WebSphere Studio Application Developer 中生成的代码中的域映射不相同,所以您的查找程序可能会出问题。要解决这一问题,转至 EJSCMpxxxxxx 生成的 bean,找到为 findbyprimaryKey 生成的 select 语句,然后将其用做模板。
- 如果(在 WebSphere Studio Application Developer 中)设置了 preferences 页使得每次保存更改时不进行自动构建,那么您必须执行下列步骤以生成 EJB 部署代码和 RMIC 存根:
- 选择 EJB 项目,单击鼠标右键,然后选择 Generate for enterprisebean(s) => Deploy and RMIC code。
- 在得到一个错误之后(因为 RMIC 只可以识别编译过的代码,而生成的 Java 类还没有编译,所以会给出一个错误),切换到 Java 透视图并构建该项目。
- 重复第一步。这次将不会得到任何错误。
- 重复第二步,由于想编译新生成的存根,所以当您部署企业 bean 时,您不会收到任何运行时错误。
下面是一个关于 EJB 项以及在将企业 bean 移植到 WebSphere Studio Application Developer 之后在何处找到它们的列表:
项 | 位置 |
企业 bean(域和类) | 在 J2EE 视图中展开 EJB Modules 文件夹。 |
企业 bean(finder 类、访问 bean、生成的类)。 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后转至 com子目录。它们位于该子目录。 |
关联信息 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Open With => EJB Extension Editor。在扩展编辑器里,单击 Relationships选项卡。 |
查找程序助手描述 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Open With => EJB Extension Editor。在扩展编辑器里,单击 Finders选项卡。 |
映射/模式描述 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Generate => EJB to RDB mapping。 |
事务划分(Transaction demarcation) | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Open With => EJB Editor。在该编辑器中,单击 Transaction选项卡。 |
隔离级别或更新查找或自述方法标记 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Open With => EJB Extension Editor。在扩展编辑器里,单击 Methods选项卡。 |
EJB 环境变量 | 在 J2EE 视图中展开 EJB Modules 文件夹,然后选择您想使用的 EJB JAR。在弹出菜单中,单击 Open With => EJB Editor。在该编辑器中,单击 Environment选项卡。 |
第七部分 - 移植 EJB 访问 bean
当使用 Export Tool for Enterprise JavaBeans1.1 从 VisualAge for Java,企业版,版本 4.0 导出企业 bean 时,将同时导出任何相关 Java bean 封装器以及拷贝助手访问 bean 的元数据。因为 WebSphere Studio Application Developer 不支持行集(rowset)访问 bean,因此将不会导出这些访问 bean 的元数据。
注:带有将数组作为参数或返回类型的方法的已移植访问 bean 可能会因为 WebSphere Studio Application Developer 中的访问 bean 工具而出现问题。
第八部分 - 移植定制查找程序助手
当使用 Export Tool for Enterprise JavaBeans1.1 从 VisualAge for Java,企业版,版本 4.0 导出企业 bean,或使用Deployment Tool for Enterprise JavaBeans(即,EJB Deploy Tool)部署 1.0 JAR 文件时,将把查找程序助手接口移植到扩展文档。如果 JAR 文件是 EJB JAR 文件,还会将元数据从查找程序助手接口移植到扩展文档。但是,只有在 JAR 文件中的查找程序描述符没有出现在扩展文档中时,查找程序助手接口才会移植到扩展文档。如果使用 Export Tool for Enterprise JavaBeans 1.1 导出企业 bean,将从导出的 JAR 中过滤出冗余的类。如果不是使用 Export Tool for Enterprise JavaBeans 1.1 导出企业 bean,并且企业 bean 是同冗余类一起导入的,那么将简单地忽略这些类。
第五节 - 使用第三方外部 JAR
第一部分 - 在 Web 项目中使用第三方 JAR 的推荐方法。
在 Web 项目中使用第三方 JAR 的推荐方法是将该 JAR(将它保持为 JAR 文件)导入您的项目中。这是唯一由 J2EE 定义的、可移植的使用 JAR 文件的方法,它将确保您在将项目部署到另一个服务器时不必做任何更改。
要在 Web 项目中使用外部 JAR 文件,请遵循以下的步骤。如果您还需要在 EJB 项目中使用该 JAR 文件,则请执行第二部分中的步骤:
- 选择 File => Import => File System。单击 Next。为了确保在导入 JAR 文件时不扩展该文件,您必须选择 File system,而不是 Zip file。
- 浏览到 JAR 文件目录。
- 将其导入
Webproject/webApplication/WEB-INF/lib
文件夹中,其中 Webproject 是 Web 项目的名称。 - 单击 Finish。JAR 文件将被自动添加到 Java 构建路径中,并且在运行时不需要做进一步的更改。
第二部分 - 在 EJB 或 Web 项目中使用第三方 JAR 的推荐方法
在 EJB 或 Web 项目中使用第三方 JAR 的推荐方法是将该 JAR(将它保持为 JAR 文件)导入您的项目中。这是唯一由J2EE 定义的、可移植的使用 JAR 文件的方法,它将确保您在将项目部署到另一个服务器时不必做任何更改。
要在 Web 或 EJB 项目中使用外部 JAR 文件,请执行下面的步骤。如果您只需要在 Web 项目中使用 JAR 文件,则请执行第一部分中的步骤:
- 选择 File => Import => File System。单击 Next。为了确保在导入 JAR 文件的时候不扩展该文件,您必须选择 File system而不是 Zip file。
- 浏览 JAR 文件目录。
- 将 JAR 文件导入含有 Web 或 EJB 项目的 Enterprise Application 项目。
- 单击 Finish。JAR 文件将被自动添加到 Java 构建路径,在运行期间不需要做进一步的更改。
- 执行第四部分中的步骤以将 JAR 添加到 Web 或 EJB 项目的“模块依赖(Module Dependencies)”中。
第三部分 - 使用外部 JAR 文件的另一种方法
您也可以将 JAR 文件保留在 WebSphere Studio Application Developer 之外并将其同时添加到 Java 构建路径和服务器示例的类路径中。由于这样做会导致应用程序不容易移植,所以不推荐这么做。当移到另一个服务器时,您将总是不得不更新服务器的类路径。请采取下列步骤:
- 将外部 JAR 文件添加到需要 JAR 文件的项目的 Java 构建类路径。
- 选择项目,在其上单击鼠标右键,然后从弹出菜单选择 properties。
- 单击 Java Build path。
- 单击 libraries选项卡。
- 单击 Add External JARs。选择 JAR 文件,然后单击 Open。
- 单击 OK。
- 将外部 JAR 文件添加到服务器实例的类路径
- 打开 Server Configuration 视图,展开 Server Instances 文件夹 。
- 选择部署项目的服务器实例。在其上单击鼠标右键,然后单击 Open。
- 单击 paths选项卡。
- 单击 Add External JARs。选择 JAR 文件,然后单击 Open。
- 关闭服务器实例并保存所做的更改。
第四部分 - Web 项目和其它 EJB 项目之间的引用
如果有一个依赖另一个 EJB 项目的 Web 或 EJB 项目,那么您必须采取下列步骤以确保该项目在运行时可见。
- 选择 Web 或 EJB 项目,在其上单击鼠标右键,然后在弹出菜单中选择 Edit ModuleDependencies。
- 选择项目在运行时所需的 JAR 或 EJB 项目。
- 单击 Finish。
这修改了 Web 或 EJB 项目清单文件使之含有对所需 EJB 项目的显式引用。通过使用这一技术,WebSphere Application Server 不需要任何特定设置以达到“模块可见性(modulevisibility)”。
第六节 - 移植示例
移植示例 #1 - VisualAge for Java JSp/servlet 样本
描述
本示例是同 VisualAge for Java,版本 4.0 一起提供的 FindTheLeapYears 样本。可以在 VisualAge for Java 联机帮助上找到关于它的信息( Samples => JSp/Servlet Development Environment)。
移植概述
执行如下的步骤来将样本从 VisualAge for Java 移植到 WebSphere Studio Application Developer。这些步骤在下面有更详细的讨论:
- 从 VisualAge for Java 导出 Java 和项目资源文件。
- 创建一个新的 WebSphere Studio Application Developer Web 项目。
- 将 Java 和项目资源文件导入 WebSphere Studio Application Developer 项目。
- 定义任何 servlet 并做任何所需的应用程序重新构建更改。
- 创建 WebSphere Studio Application Developer 服务器项目。
- 测试移植的应用程序。
第一部分 - 从 VisualAge for Java 导出您的文件
- 打开 VisualAge for Java。
- 选择 IBM JSp Examples项目。
- 在该项目上单击鼠标右键,然后选择 Export。选择 Directory单选按钮,然后单击 Next。
- 输入您想导入文件的目录的名称。
- 清除
.class
复选框的复选标记。因为会在WebSphere StudioApplication Developer 中重建该项目并会重建这些文件,所以您无需导出这些文件。 - 选中
.java
复选框,然后单击 Details。只选择 LeapYear 文件,然后单击 OK。 - 选中 resource复选框,然后单击 Details。
- 选择位于下列目录的
LeapYearInput.html
和LeapYearResults.jsp
:IBMWebSphere Test Environment/hosts/default_host/default_app/web/JSp/sample3
。 - 单击 OK。
- 清除 Create Manifest file复选框的复选标记(您无须创建一个清单文件)。
- 单击 Finish。
- 关闭 VisualAge for Java。
第二部分 - 创建一个新的 WebSphere Studio Application DeveloperWeb 项目
- 打开 WebSphere Studio Application Developer。
- 创建一个新的名为 LeapYear的 Web 项目( File => New => project => Web =>Webproject)。将 Enterprise Application项目的名称改为 LeapYearEAR,然后单击 Next。您可以将该Web 项目放入任何现有的 Enterprise Application(EAR)项目中,但是对于这个示例,您将把它放到 LeapYearEAR 中。
- 验证项目名称是正确的,然后单击 Next。
- 接受缺省值,然后单击 Finish。
第三部分 - 将 Java 和项目资源文件导入WebSphere Studio Application Developer 项目
通过执行下列步骤来将 Java 源文件导入 LeapYear 项目源代码目录:
- 在 Web 透视图中,展开 LeapYear,然后选择 source目录。
- 单击 File => Import => File system,然后单击 Next。浏览至文件导出到的目录,然后单击 OK。
- 您只想将 Java 源文件导入 source目录中,因此,请在 Import 对话框中展开导出目录,然后只选择 com子目录(该目录含有三个 Java 源文件)。
- 单击 Finish。这会创建
LeapYear/source/com/ibm/ivj/wte/samples/leapyear/LeapYearXXXX.java
文件。Java 文件会被自动编译进LeapYear/webApplication/WEB-INF/classes
。
通过执行下列步骤,将资源文件导入 webApplication目录下的 LeapYear 项目:
- 在当前的 Web 透视图中,展开 LeapYear 项目,然后选择 webApplication目录。
- 选择 File => Import => File system,然后单击 Next。浏览到文件导出到的目录,将您的这个导出目录展开到 sample3子目录,然后单击 OK。
- 因为您只是想将资源文件导入 webApplication目录,因此请在 Import 对话框中,选择 sample3子目录,该目录含有
.jsp
和.html
文件。 - 单击 Finish。文件被导入 webApplication 目录。
第四部分 - 定义任何 servlet 并做任何重新构建的应用程序更改。
- 您现在需要创建一个 web servlet。选择 LeapYear 项目,然后将其展开( Leap Year => webApplication => WEB-INF)到
web.xml
文件。打开web.xml
文件。 - 单击该页面底部的 Servlets选项卡。
- 单击 Add。
- 确保选中了 Servlet单选按钮。
- 选择类 LeapYear,然后单击 OK。
- 选择 URLMapping => Add,然后导入 LeapYear。
- 保存更改( File => Save web.xml),然后关闭
web.xml
文件。
由于源/应用程序结构有了微小的改动,因此您需要做任何应用程序更改:
- 在 Tasks视图里将有两个错误。一个错误在
LeapYearInput.html
中,另一个在LeapYearResults.jsp
中。 - 打开
LeapYearResults.jsp
文件。用LeapYearInput.html
替换/JSp/index.html
。 - 打开
LeapYearInput.html
文件。用 LeapYear替换/servlet/com.ibm.ivj.wte.samples.leapyear.LeapYear
。 - 保存所做的更改,然后关闭
LeapYearResults.jsp
和LeapYearInput.html
文件。 - 要避免运行时错误,请打开
LeapYear.java
文件,该文件位于下列子目录:source/com/ibm/ivj/wte/samples/leapyear
。 - 转至第 118 行,然后将 getRequestDispatcher 从 "
/JSp/Sample3/LeapYearResults.jsp
"更改为"LeapYearResults.jsp"
- 保存所做的更改,然后关闭
LeapYear.java
。
此时已将该样本移植到 WebSphere Studio ApplicationDeveloper。所有剩下的工作是创建一个 WebSphere Studio Application Developer服务器项目,然后在该 WebSphere 测试环境下测试该样本。
第五部分 - 创建 WebSphere Studio Application Developer 服务器项目
- 单击 File => New => project => Server => Server project。单击 Next。在 project name 域中,输入 newServer,然后单击 Finish。您会被自动切换到 Server 透视图。
- 在 newServer上单击鼠标右键,然后单击 New => ServerInstance and Configuration。
- 在 serverName域中,输入 WSTestEnv。在 Serverinstance type域中,选择 WebSphere V4.0 Test Environment。单击 Finish。
- (可选的)单击 Window => preferences => Server => Defaults& Template。将 WSTestEnv 添加到 Default Server Instances域,然后单击 OK。(只有在有其它服务器时才需要这一步。)
现在,需要向服务器配置指定您的 EAR 项目:
- 从 Server Configuration视图中,单击 Server Configurations => WSTestEnv。
- 在其上单击鼠标右键,然后单击 Add project => LeapYearEAR。
第六部分 - 测试移植的 LeapYear 应用程序
- 选择
LeapYearInput.html
文件。 - 在该 HTML 文件上单击鼠标右键,然后在弹出菜单中单击 Run on Server。
- 请在服务器启动时等待。观察 Console页(在 Servers 视图单击 Console选项卡)直到出现 "ServerDefault Server open for e-business" 消息。
- 当浏览器打开时,将 2001输入到 Start Year域,然后单击 Submit。
- Console 视图显示消息 LeapYear:init。一直等待直到看到闰年列表,然后在 Servers 视图中选择 WSTestEnv。在其上单击鼠标右键,然后单击 Stop。
移植示例 #2 - 企业 bean,VCE 和数据库样本
样本描述
您将使用两个 EJB 开发样本,Hello World 和 Increment。为访问这些样本,请打开联机帮助,然后选择 Samples => EJBDevelopment。
对于本示例,您必须使用 VisualAge for Java,版本 4.0。
不必将这些样本一起移植。如果目前您没有使用 DB2,您可能不希望移植 Increment。这时,您可以忽略任何仅适用于 Increment 样本的步骤。
开始之前
- 确保应用程序运行在 VisualAge for Java 上(即,已经为 Increment 样本完成了 DB2 设置)。
- 确保停止了 VisualAge for Java WebSphere 测试环境 EJB 服务器和持久名称服务器(persistent Name Server)(这样,它们将不会与 WebSphere StudioApplication Developer 冲突)。
移植步骤
将执行下列步骤来将样本从 VisualAge for Java移植到 WebSphere Studio Application Developer。这些步骤在下面有更详细的讨论:
- 从 VisualAge for Java 导出客户机 Java 源代码。
- 将企业 bean 从 VisualAge for Java 导出为一个 EJB1.1 JAR 文件。
- 创建一个新的 WebSphere Studio Application Developer EJB 项目。
- 导入 EJB 1.1 JAR 文件。
- 生成并部署 RMIC 存根(RMIC Stub)和 Tie 代码。
- 指定数据源绑定信息。
- 创建一个新的 WebSphere Studio Application Developer Java 项目并导入客户机代码。
- 创建一个 WebSphere Studio Application Developer 服务器项目。
- 指定数据源与 EAR 项目。启动数据库。
- (可选的)启动 DB2 并连接 sampleDB 数据库。
- 测试 HelloWorld 客户机。
- 测试 Increment 客户机。
- 使用 EJB Test Client 测试移植的 Increment 和 HelloWorld EJB。
第一部分 - 从 VisualAge for Java 导出客户机 Java 源代码
- 启动 VisualAge for Java,版本 4.0。
- 选择 IBM EJB Samples项目
- 在该项目上单击鼠标右键,然后单击 Export。
- 选择 Directory单选按钮,然后单击 Next。
- 输入将文件导出到的目录的名称。
- 清除
.class
复选框的复选标记。(您将在 WebSphere Studio Application Developer 中重建 .class 文件以确保成功地移植了样本) - 选中
.java
复选框。单击 Details,然后清除 IBM EJB Samples复选框的复选标记。 - 选中 HelloClient和 IncrementClient复选框,然后单击 OK。
- 清除
.resource
复选框的复选标记(除非您想得到 DB2.clp
设置脚本)。 - 选中 Create manifest file复选框。这创建您需要的模式和映射 XMI 文件。
- 单击 Finish。
第二部分 - 将 EJB 组从 VisualAge for Java 导出到一个 EJB1.1 JAR
- 单击 EJB选项卡。在 Enterprise Beans 窗格中,在 IBMEJBSamples上单击鼠标右键,然后单击 Export => EJB 1.1 JAR。
- 选择一个目录以将 JAR 文件导出到该目录。
- 在 JAR file 域中,输入想创建的 JAR 文件的名称。
- 在 Select a target database列表中,选择 DB2 for NT, V7.1。
- 选中
.class
复选框。(您将在 WebSphere Studio Application Developer 中重建这些文件以验证移植,但是要这么做必须选中本复选框。) - 选中
.java
复选框。(您需要四个 HelloWorld 和五个 Increment EJB 文件。) - 单击 Finish。
- 如果您正在运行这些样本,那么请停止 VisualAge for Java 持久名称服务器、EJB 服务器与 WTE。
- (可选的)退出 VisualAge for Java。
第三部分 - 创建一个新的 WebSphere Studio Application DeveloperEJB 项目
注:这一节是可选的 - 如果没有 EJB 项目和 EAR 项目,那么当您导入 EJB 1.1 JAR 文件时,它们会自动创建。
- 启动 WebSphere Studio Application Developer。
- 创建一个新的 EJB 项目( File => New => project => EJB => EJBproject => Next)。
- 在 project name域中,输入 EJBSamples。
- 在 EAR project name域中,输入 EJBSamplesEAR。单击 Finish。可以将这个 EJB 项目放入您当前拥有的任何现有企业应用程序(EAR)项目中,但对于本示例,请创建一个称为 EJBSamplesEAR 的 EAR 项目。
- 此时创建了新项目,该项目将出现在 J2EE 透视图中。
第四部分 - 将 EJB 1.1 JAR 文件导入 WebSphere StudioApplication Developer EJB 项目
- 单击 File => Import => EJB JAR file。单击 Next。
- 在 EJB JAR file域中,浏览查找您创建的 EJB 1.1 JAR 的位置。
- 在 EJB project域中,选择 EJBSamples
。
- 在 Enterprise Application project name域中,选择 EJBSamplesEAR。单击 Finish。
- 您将接收到五个 EJB 1.1 警告。可以忽略它们。
第五部分 - 生成并部署 RMIC 存根与 tie 代码
- 在 J2EE 透视图中,展开 EJB Modules 文件夹,然后选择 IBMEJBSamples。
- 在其上单击鼠标右键,然后单击 Generate => Deploy and RMIC Code。
- 选择 Hello World和 Increment beans。单击 Finish。
第六部分 - 指定数据源绑定信息
- 在 J2EE 透视图中,展开 EJB Modules 文件夹,然后选择 IBMEJBSamples。
- 在该模块上单击鼠标右键,然后选择 Open With => EJB Extension Editor。
- 在 EJB 扩展编辑器中,单击 Bindings选项卡。
- 选择 IBMEJBSamples,然后在 DataSource JNDI name域中输入 jdbc/sampledb。
- 如果有必要,请输入缺省的用户标识和密码。
- 关闭 EJB 扩展编辑器(将会提示您保存所做的更改)。
第七部分 - 创建一个新的 WebSphere Studio Application DeveloperJava 项目
- 创建一个新的 Java 项目( File => New => project => Java => Java project)。
- 在 project name域中,输入 EJBClients。单击 Next。
- 单击 projects选项卡。选中 EJBSamples复选框。
- 单击 Finish。
您现在将把 Java 代码导入 Java 项目:
- 在 Java 透视图中,打开 Navigator 视图( perspective => Showview => Navigator)。
- 在 Navigator 视图中,单击 EJBClients 项目。
- 选择 File => Import => File system,然后单击 Next。浏览到您将客户机代码导出到的目录。
- 展开您的导出目录,然后找到您的文件(这些文件将位于 com下的一个子目录下)。选择含有 HelloClient 和 Increment Client 文件的文件夹。
- 单击 Finish。
- 在 Tasks 视图上将有两个错误(如果没有将 EJBSamples项目添加到类路径,您将会碰到多个错误)。出现一个错误是因为存在对可以在
j2ee.jar
中找到的javax.ejb.CreateException
的引用。出现另一个错误是因为有一个对可以在ivjejb35.jar
中找到的com.ibm.ivj.ejb.runtime.AbstractSessionAccessBean
的引用。 - 选择 EJBClients,然后在其上单击鼠标右键。 单击 properties => Java Buildpath。
- 如果没有链接到 EJBSamples 项目,请选择 projects选项卡,然后选中 EJBSamples复选框。现在应该只剩下两个错误了。
- 单击 libraries 选项卡,然后单击 Add External JARs。
- 浏览到
WS_Installdirr/plugins/com.ibm.etools.websphere.runtime/lib
目录,在该目录中 WS_Installdir是您的产品安装目录。 - 选择
j2ee.jar
文件。单击 Open,然后单击 OK。 - 在 Tasks 视图里仍然还有一个错误。
- 选择 EJBClients,然后在其上单击鼠标右键。 单击 properties => Java Buildpath。单击 libraries 选项卡,然后单击 Add External JARs。
- 浏览到
WS_Installdirr/plugins/com.ibm.etools.websphere.runtime/lib
目录,在该目录中 WS_Installdir是您的产品安装目录。 - 选择
ivjejb35.jar
文件。单击 Open,然后单击 OK。 - 现在,在 Tasks 视图中除了五个 EJB 1.1 警告之外,应该没有错误了。
至此,已经将样本移植到 WebSphere Studio ApplicationDeveloper。所有剩下的工作只是在 WebSphere 测试环境中测试它们。
第八部分 - 创建一个 WebSphere Studio Application Developer服务器项目
- 单击 File => New => project => Server=> Server project,然后单击 Next。在 project name域中,输入 EJBServer,然后单击 Finish。
- Server 透视图会自动打开。在 Navigator 视图中,选择 EJBServer,然后在其上单击鼠标右键。
- 单击 New=> Server Instance and Configuration。
- 在 Server name 域中,输入 MyEJBServer。在 Serverinstance type 域中,单击 WebSphere V4.0 Test Environment,然后单击 Finish。
- (可选的)单击 Window => preferences => Server。将 MyEJBServer添加到 Default Server Instances域中,然后单击 OK。(只有在有其它服务器的时候才需要这一步。)
第九部分 - 指定数据源
- 在 Server Configuration 视图中,展开 Server Configurations,然后选择 MyEJBServer。
- 在其上单击鼠标右键,然后在弹出菜单中单击 Open。
- 单击 Data source选项卡。
- 在 JDBC 驱动程序列表中,选择 Db2JdbcDriver,然后单击 Edit。
- 验证 Class path域是否含有指向
db2java.zip
的正确路径。单击 OK。 - 选择 JDBC 驱动程序,然后单击 Data source域右边的 Add按钮。
- 在 Add a data source对话框中,在 Name域中输入 EJB Sampledb。在 JNDI name域中,输入 jdbc/sampledb。
- 在 Database name 域中,输入 sampledb。单击 OK。
- 保存所做的更改,然后关闭服务器配置编辑器。
现在,需要向服务务器配置指定 EAR 项目并启动服务器:
- 在 Server Configuration视图中,单击 Server Configurations => MyEJBServer。
- 在其上单击鼠标右键,然后单击 Add project => EJBSamplesEAR。
- 在 Server视图中,在 MyEJBServer 上单击鼠标右键,然后单击 Start。
第十部分 - 启动 DB2 并连接到 sampleDB
注:DB2 必须正在运行并且 sampleDB 必须已创建并可用(按照 VisualAge for Java 样本)。只有在移植 Increment 样本时这才适用。
可选的:可以执行下列步骤以验证 DB2 设置:
- 切换到 Data 透视图。
- 在 DBExplorer 视图中单击鼠标右键,单击鼠标右键,然后选择 New Connection。
- 在 Connection Name域中,输入 sampleDB connection。
- 在 Database 域中,输入 SAMpLEDB。
- 在 JDBC Driver 域中,选择 IBM DB2 App Driver。
- 单击 Finish。
- 如果有必要,输入一个缺省的用户标识和密码。
- 在 DBExplorer 视图中,展开 sampleDB 连接以确保 Tables 子目录包含 MYHOST.INCREMENTS。
第十一部分 - 测试移植的 HelloWorld 客户机
- 在 Java 透视图中,选择 EJBClients 项目。
- 单击 Run按钮,然后选择 Run => Java application。
- 选择 HelloClient,然后选择 Finish。
- 在客户机的窗口的 Input域,输入 XX YY,然后单击 Send。
- 此时 Output 域的值变成了 您输入的:XX YY。关闭该窗口以终止客户机。
您已成功地移植并测试了 HelloWorld 样本。
第十二部分 - 测试移植的 Increment 客户机
- 在 Java 透视图中,选择 EJBClients 项目。
- 单击 Run按钮,然后选择 Run => Java application。
- 选择 IncrementClient,然后选择 Finish。
- 此时 Console 视图包含下列内容:
Obtaining initial context., Looking up Increment enterprise bean.,
Obtaining IncrementHome object., Looking for increment object named:TEST,
Object named: TEST has count: 0, Now, object named: TEST has count: 1,
Now, object named: TEST has count: 2, Now, object named: TEST has count:3
Now, object named: TEST has count: 4, Now, object named: TEST has count:5
第十三部分 - 使用 EJB Test Client 测试移植的 Increment 和 HelloWorld。
- 在 J2EE 透视图的 J2EE 视图中展开 EJB Modules文件夹,在 IBMEJBSamples上单击鼠标右键,然后选择 Run on server。EJB Test Client 将开始运行。
- 在 JNDI Explorer页面中,单击 HelloWorld以测试 HelloWorldEJB。
- 展开
com/ibm/ivj/ejb/samples/increment
,然后单击 Increment以测试 Increment EJB。
您已成功地移植并测试了 Increment 和 HelloWorld 样本。
在 Server 透视图的 Servers 视图中,选择 MyEJBServer,在其上单击鼠标右键,然后单击 Stop。在 processes 视图中,选中所有已终止的进程,然后在它们上面单击鼠标右键,然后选择 Remove all Terminated。
移植示例 #3 - WebSphere Studio,版本 4.0 Web应用程序
样本描述
必须对本示例使用 WebSphere Studio,版本 4.0。
您将使用的样本是 YourCo样本。要访问该样本,请打开联机帮助( Help => WebSphereStudio 4.0 => How to => Work with the samples => Overview)。要装入该样本,请遵循(Application Server 4.0)的 Opening the Studio Samples中的指示信息并装入 YourCo.wsr
。
注:移植的应用程序将在 WebSphere Studio ApplicationDeveloper 中执行,但是 WebSphere Studio Application Developer 目前不提供 WebSphere Studio,专业版或高级版的所有 Web 页面设计和开发功能部件。
开始之前
- 确保将 YourCo 样本装入了 WebSphere Studio。
- 停止 WebSphere Application Server 的所有实例(这样它将不会同WebSphere Studio Application Developer 冲突)。
移植步骤
要将该样本从 WebSphere Studio 移植到 WebSphere Studio ApplicationDeveloper,您将执行下列步骤。每一步在下面有更详细的描述。
- (可选的)启动 WebSphere Studio 并创建一个新的 Migration 阶段(您将使用Test 阶段)。
- 创建一个 Web 配置描述符文件。
- 创建一个移植 WAR 文件(含有一个 Webpath)。
- 启动 WebSphere Studio Application Developer 并导入这个 WAR 文件。
- 创建一个 WebSphere Studio Application Developer 服务器项目。
- 测试移植的应用程序。
(可选的)第一部分 - 启动 WebSphere Studio 版本 4.0并创建一个新的 Migration 阶段(您将使用 Test 阶段)
通常,可以为移植创建一个新的阶段,但为了达到本示例的目的,您使用 WebSphere Studio 所包括的 Test 阶段。使用Test 阶段将使您无须在第 8 步中手工编辑许多 servlet 映射。
有关如何为移植创建一个新的阶段,请参考 第一节。
第二部分 - 创建一个 Web 配置描述符文件
- 在 project file 视图中,单击 project => Create Web ConfigurationDescriptor File,然后接受缺省值
WEB-INF/localhost_web.xml。
- 选择所有所需的 servlet(任何名称不是 xxxxBean 形式的文件)。
- 本样本没有“标记库描述符(Tag libary Descriptor (TLD))”文件。
- 单击 Create。
第三部分 - 创建一个移植文件
- 当在 project file 视图中时,选择服务器 localhost,单击 properties => publishing => WebApp Web path,然后输入一个 web 路径(上下文根)"newStudioSample."(设置 Web 路径将仍然是最终 WebSphere Studio Application Developer 产品中的推荐方法)。
- 当在 project file 视图中时,选择 project => Create Migration file。
- 验证 localhost是所选的服务器。
- 验证
localhost_web.xml
是所选的 Web 配置描述符文件。 - 单击 OK。
- 缺省的 JAR 文件名称是
X:/Studio40/projects/YourCo/localhost.jar
,这里 X是 WebSphere Studio 安装目录。 - 单击 Save。
- (可选的)关闭 WebSphere Studio。
第四部分 - 启动 WebSphere Studio Application Developer 并导入 WAR 文件
- 启动 WebSphere Studio Application Developer。
- 单击 File => Import=> WAR file=> Next。
注 : 必须使用 WAR file 选项来导入 JAR 文件,否则它将不能正常工作。 - 在 WAR File域中输入指向
localhost.jar
的路径或单击 Browse以查找该路径。 - 在 Web project域中,输入 newStudioSample。
- 在 EAR project name 域中,输入 newStudioSampleEAR。
- 单击 Finish。WebSphere Studio Application Developer 将解包
localhost.jar
。 - 将会有许多未解析的引用或丢失的导入文件。它们将出现在 Task 视图中。
com.ibm.db
requiresdatabeans.jar
.com.ibm.webtools.runtime
requireswebtlsrn.jar
.com.ibm.ejs.ns.jndi
requiresns.jar
.com.ibm.webshpere.advanced.cm.factory
requirescm.jar
.com.ibm.ejs.models.base.extensions.webappext.ServletExtensions
requiresws-base-extensions.jar
.
为解决这一问题,必须修改 Web 项目的 Java 构建路径。
- 在该项目上单击鼠标右键,然后单击 properties => Java Build path。
- 单击 libraries选项卡。单击 Add External JARs。
- 从目录
plugins/com.ibm.etools.websphere.runtime/lib
中导入下列 JAR 文件:databeans.jar
、webtlsrn.jar
、ns.jar
、cm.jar
和ws-base-extensions.jar
- 会剩下有 38 个警告。不用管它们。
- 在文本字符串错误中使用了两个非法字符。打开
Login/LogoutInput.html
和Database/CreateDatabase.html
文件,然后将双引号字符 (") 更改为单引号(')。保存所做的更改。 - 在 newStudioSample项目上单击鼠标右键,然后单击 Rebuild project。
至此已经将样本移植到了 WebSphere Studio ApplicationDeveloper。所有剩下的工作只是创建一个 WebSphere Studio Application Developer服务器项目,然后在 WebSphere Test Environment 下测试该样本。
第五部分 - 创建一个 WebSphere Studio Application Developer服务器项目
- 切换到 Server 透视图。
- 单击 File => New => project => Server => Server project。单击 Next。在 project name 域中,输入 newServer,然后单击 Finish。
- 在 Navigator 视图中,在 newServer上单击鼠标右键,然后单击 New =>Server Instance and Configuration。
- 在 serverName域中,输入 WSTestEnv。在 Serverinstance type域中,选择 WebSphere V4.0 Test Environment。单击 Finish。
- (可选的)单击 Window => preferences => Server。将 WSTestEnv添加到 Default Server Instances域,然后单击 OK。(只有在有其它服务器的时候才需要这一步。)
现在,需要将您的 EAR 项目指定到服务器配置:
- 在 Server Configuration视图中,单击 Server Configurations => WSTestEnv。
- 在其上单击鼠标右键,然后单击 Add project => newStudioSampleEAR。
第六部分 - 测试移植的 YourCo 应用程序
- 选择
YourCoIntro.html
文件,该文件位于您的 newStudioSample 项目的以下目录中:webApplication/StudioSamples/YourCo
。 - 在
YourCoIntro.html
上单击鼠标右键,然后在弹出菜单上单击 Run on Server。 - 在服务器启动期间等待。观察 Console页(单击 Servers视图中的 Console选项卡)直到出现消息“Server Default Server openfor e-business”。
- 如果还没有在 WebSphere Studio 中运行该样本,那么您需要通过单击 Database Configuration来配置数据库。
- 当浏览器打开时,向下拖动滚动条,然后单击 Run This Sample。
- 一直等到出现浏览器 Welcome页面,然后单击 EmployeeCenter。
注:第一次运行该应用程序时,会在 Console 页面中收到下列错误:DataSource not found. Try to constuct a new datasource name: jdbc/yourco
这些错误会自己纠正。可以忽略它们。
DataSource not found. Try to constuct a new datasource name: jdbc/studio - 完成之后,关闭浏览器窗口和 WebBrowser 视图,然后在 Server Control panel中的 WSTestEnv上单击鼠标右键,然后单击 Stop。
- (可选的)关闭 WebSphere Studio Application Developer。
可以在 有关产品过渡的 Web 页面上获得有关移植(包括关于 VisualAge for Java 同 WebSphere Studio Application Developer 共存的白皮书)和其它主题的最新信息。
下列出版物和 Web 页面提供了一些对您使用 WebSphere Studio Application Developer 有帮助的常规信息:
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文.
- Enterprise JavaBeans 规范,v1.1
- IBM WebSphere InfoCenter
- WebSphere Version 4 Application Development Handbook
- programming J2EE ApIs with WebSphere Advanced
- EJB Development with VisualAge for Java for WebSphere Application Server
您可能会对以下更多的读物感兴趣:
- 一篇 关于IBM Enterprise JavaBeans 部署工具的文章
- WebSphere 开发者园地
- 关于 VisualAge for Java 及其将来的 FAQ
- 关于 WebSphere Studio 系列,以及 WebSphere Studio Application Developer 的功能部件及其方向的信息。
- 外部新闻组
- 关于 VisualAge for Java 将来的方向的外部新闻组