第五节 — 使用第三方外部 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 Module Dependencies。 
选择项目在运行时所需的 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 Studio Application Developer 中重建该项目并会重建这些文件,所以您无需导出这些文件。 
选中 .java 复选框,然后单击 Details。只选择 LeapYear 文件,然后单击 OK。 
选中 resource 复选框,然后单击 Details。 
选择位于下列目录的 LeapYearInput.html 和 LeapYearResults.jsp: IBM WebSphere Test Environment\hosts\default_host\default_app\web\JSP\sample3。 
单击 OK。 
清除 Create Manifest file 复选框的复选标记(您无须创建一个清单文件)。 
单击 Finish。 
关闭 VisualAge for Java。 
第二部分 — 创建一个新的 WebSphere Studio Application Developer Web 项目打开 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 目录。 

解决方案 »

  1.   

    第四部分 — 定义任何 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 Application Developer。所有剩下的工作是创建一个 WebSphere Studio Application Developer 服务器项目,然后在该 WebSphere 测试环境下测试该样本。第五部分 — 创建 WebSphere Studio Application Developer 服务器项目单击 File => New => Project => Server => Server Project。单击 Next。在 Project name 域中,输入 newServer,然后单击 Finish。您会被自动切换到 Server 透视图。 
    在 newServer 上单击鼠标右键,然后单击 New => Server Instance and Configuration。 
    在 serverName 域中,输入 WSTestEnv。在 Server instance 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 选项卡)直到出现 "Server Default Server open for e-business" 消息。 
    当浏览器打开时,将 2001 输入到 Start Year 域,然后单击 Submit。 
    Console 视图显示消息 LeapYear:init。一直等待直到看到闰年列表,然后在 Servers 视图中选择 WSTestEnv。在其上单击鼠标右键,然后单击 Stop。 
    移植示例 #2 — 企业 bean,VCE 和数据库样本样本描述您将使用两个 EJB 开发样本,Hello World 和 Increment。为访问这些样本,请打开联机帮助,然后选择 Samples => EJB Development。对于本示例,您必须使用 VisualAge for Java,版本 4.0。不必将这些样本一起移植。如果目前您没有使用 DB2,您可能不希望移植 Increment。这时,您可以忽略任何仅适用于 Increment 样本的步骤。开始之前确保应用程序运行在 VisualAge for Java 上(即,已经为 Increment 样本完成了 DB2 设置)。 
    确保停止了 VisualAge for Java WebSphere 测试环境 EJB 服务器和持久名称服务器(Persistent Name Server)(这样,它们将不会与 WebSphere Studio Application 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 Developer EJB 项目注:这一节是可选的 — 如果没有 EJB 项目和 EAR 项目,那么当您导入 EJB 1.1 JAR 文件时,它们会自动创建。启动 WebSphere Studio Application Developer。 
    创建一个新的 EJB 项目(File => New => Project => EJB => EJB Project => Next)。 
    在 Project name 域中,输入 EJBSamples。 
    在 EAR project name 域中,输入 EJBSamplesEAR。单击 Finish。可以将这个 EJB 项目放入您当前拥有的任何现有企业应用程序(EAR)项目中,但对于本示例,请创建一个称为 EJBSamplesEAR 的 EAR 项目。 
    此时创建了新项目,该项目将出现在 J2EE 透视图中。 
    第四部分 — 将 EJB 1.1 JAR 文件导入 WebSphere Studio Application 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 Developer Java 项目创建一个新的 Java 项目(File => New => Project => Java => Java Project)。 
    在 Project name 域中,输入 EJBClients。单击 Next。 
    单击 Projects 选项卡。选中 EJBSamples 复选框。 
    单击 Finish。 
      

  2.   

    您现在将把 Java 代码导入 Java 项目:在 Java 透视图中,打开 Navigator 视图(Perspective => Show view => 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 Build Path。 
    如果没有链接到 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 Build Path。单击 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 Application Developer。所有剩下的工作只是在 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。在 Server instance 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 样本。