4.在References表格中每一行的NDI Name列中都输入上面的JNDI名 图2-1显示了设置的JNDI名: ◇@☒Q①®國屋s巴8留骨 INDI Nam 图2-1 ConverterApp JNDI名选项页 七.部署J2EE应用程序 前面我们已经将本例中的组件全部加入到应用程序中了,现在开始部署。 I.选择ConverterApp应用程序(在树中) 2.选择菜单ToolsDeplo 3.在Introduction对话框中确定Object To Deploy选择的是ConverterApp,Target Server选 择的是localhost 4. 选中Retur Client Jar复选框 5.在 Client JAR File Name 域 中 输 入 j2 eetutorial/examples/,src/ejb/converter//ConverterAppClient.jar(可以使用Browse 按钮),该JAR文件包含可以远程访问ConverterEJB的存根类。下一步 6.在NDI Names对话框中,检险是不是你前面输入的名字。下一步 7.在WAR Context Root对话框中,为Context Root域输入converter,当你运行Web客户 端时,converter将是访问Web的URL的一部分。下一步 8.在Rewiew对话框中点及Finish完成 9.在Deployment Progress对话框部署完成后确定退出部署
4. 在 References 表格中每一行的 JNDI Name 图 2-1 显示了设置的 JNDI 名: 列中都输入上面的 JNDI 名 e 项页 七.部署 中的组件全部加入到应用程序中了,现在开始部署。 erApp 应用程序(在树中) Tools\Deploy 域中输入 nverterAppClient.jar(可以使用 Browse 6. 7. 为 Context Root 域输入 converter。当你运行 Web 客户 8. 9. 图 2-1 Convert rApp JNDI 名选 J2EE 应用程序 前面我们已经将本例 1. 选择 Convert 2. 选择菜单 3. 在 Introduction 对话框中确定 Object To Deploy 选择的是 ConverterApp,Target Server 选 择的是 localhost 4. 选中 Return Client Jar 复选框 5. 在 Client JAR File Name j2eetutorial/examples/src/ejb/converter/Co 按钮),该 JAR 文件包含可以远程访问 ConverterEJB 的存根类。下一步 在 JNDI Names 对话框中,检验是不是你前面输入的名字。下一步 在 WAR Context Root 对话框中, 端时,converter 将是访问 Web 的 URL 的一部分。下一步 在 Rewiew 对话框中点及 Finish 完成 在 Deployment Progress 对话框部署完成后确定退出部署
八.运行J2EE应用程序客户端 按以下步骤运行应用程序客户端: l.在终端窗口中进入j2 eetutor ial/examples/.src/ejb/converter目录 .确认ConverApp.ear和ConverterAppClient.jar文件在该目录下 3. 设置APPCPATH环境变量为ConvertAppClientjar所在目录 4.执行下面的命令: runclient-client ConverterApp.ear-name ConverterClient-textauth 5. 在出现登录提示时输入用户名:guest。密码:guest123。 6.终端窗口中显示结果如下: Binding name:'java:comp/env/ejb/SimpleConverter 12160.00 0.77 Unbinding name:'java:comp/env/eib/SimpleConverter 九.运行Web客户端 在浏览器中输入下面的URL访问Web客户端。<host>表示运行J2EE服务器的机器名,如 果你的J2EE服务器和访问浏览器在同一机器上,可以用1 ocalhost代替作为机器名。 http://<host>:8000/converter 在显示页面的输入框中输入100后点击Submit提交,会看到图2-2所示的结果。 3. Converter 10nklg912160.00Yem 100了阳0.7TEx0. 子 Docunert:Dore 头四之 图2-2 Converter Web客户端
八.运行 1. onvertAppClient.jar 所在目录 名:guest。密码:guest123。 ing name:'java:comp/env/ejb/SimpleConverter' :comp/env/ejb/SimpleConverter' 九.运行 表示运行 J2EE 服务器的机器名,如 localhost 代替作为机器名。 host>:8000/converter J2EE 应用程序客户端 按以下步骤运行应用程序客户端: 在终端窗口中进入 j2eetutorial/examples/src/ejb/converter 目录 2. 确认 ConverApp.ear 和 ConverterAppClient.jar 文件在该目录下 3. 设置 APPCPATH 环境变量为 C 4. 执行下面的命令: runclient -client ConverterApp.ear -name ConverterClient -textauth 5. 在出现登录提示时输入用户 6. 终端窗口中显示结果如下: Bind 12160.00 0.77 Unbinding name:'java Web 客户端 在浏览器中输入下面的 URL 访问 Web 客户端。<host> 果你的 J2EE 服务器和访问浏览器在同一机器上,可以用 http://< 在显示页面的输入框中输入 100 后点击 Submit 提交,会看到图 2-2 所示的结果。 图 2-2 Converter Web客户端
十.修改J2EE应用程序 因为J2EESD水仅供试验用,所以它支持重复部署。如果你修改了一个J2EE应用程序,你 必须重新部署它。 修改类文件 要修改企业Bn的一个类文件,先修改源文件,然后重新编译,最后重新部署应用程序。 例如,如果你想修改ConverterBean类的dollarToYen商业方法的汇率,执行如下步骤: .编辑ConverterBean.java文件 用ant converter命令重新编译ConverterBean.java源文件 3.在deploytool中选择菜单:Tools\Update Files 4.在Update Files对话框中,如果你修改的文件已经列在对话框上面的列表中,点击OK 转到第6步。如果列在下面的列表中 它们的修改还没有被发现。选择这些文件中的 一个点击Edit Search Paths按钮 5.在Edit Search Paths对话框中指定Update Files对话框查找修改过的文件的路径 a)在Search Root域中输入查找开始的全路径 b)在Path Directory列表中,为你想搜索的每一个目录加入一行,不用全路径名,这 里的路径都是用对Search Root的相对路径 c) 确定 6.用Tools\Deploy菜单重新部署。在第一步的对话框中确定选中了Save Object Before Deploving复选框。如果你不想马上部署,可以用Tools\Save菜单先保存第5步的设置」 有一种快捷方式来重新部署,就是用菜单Tools\Update And Redeploy。除非文件找不到,否 侧不会弹出Update Files对话框。 改变WAR文件的内容步骤相同。Update Files操作会检查包括HTMI和JSP的任意文件的 ,仍然要执行ant converter命令,它会将index.jsp文件 添加文件 以下步骤可以向EJBJAR或者WAR文件中加入新文件: l.在deploytool的树视图中选择目标JAR或者WAR文件 选择General选项页 点击Edit按钮 4.添加需要的文件确定 5.在主窗口中选择莱单:Tools\Update And Redeploy 修政部署设置 要修改ConverterApp的部署设置,先选择特定的选项页然后编辑对应的输入框中内容最后 重新部署使修改生效,例如一下步骤将ConverterBean的NDI名从MyConverter改为ATypo: L.在deploytool中选中ConverterApp节点 2.选择INDI Names选项页 3】 将两个表中所有NDI Name列的内容改为Atypo
十.修改 J2EE 应用程序 因为 J2EE SDK 仅供试验用,所以它支持重复部署。如果你修改了一个 J2EE 应用程序,你 必 修改 ,最后重新部署应用程序。 ConverterBean 类的 dollarToYen 商业方法的汇率,执行如下步骤: ConverterBean.java 文件 令重新编译 ConverterBean.java 源文件 4. 你修改的文件已经列在对话框上面的列表中,点击 OK 框查找修改过的文件的路径 ctory 列表中,为你想搜索的每一个目录加入一行,不用全路径名,这 6. Tools\Deploy 菜单重新部署。在第一步的对话框中确定选中了 Save Object Before 。如果你不想马上部署,可以用 Tools\Save 菜单先保存第 5 步的设置。 有一种快捷方式来重新部署,就是用菜单 Tools\Update And Redeploy。除非文件找不到,否 则 的任意文件的 然要执行 ant converter 命令,它会将 index.jsp 文件 添加文件 General 选项页 Edit 按钮 :Tools\Update And Redeploy 修改部署设置 要修改 ConverterApp 的部署设置,先选择特定的选项页然后编辑对应的输入框中内容最后 重 JNDI名从MyConverter改为ATypo: 1. 须重新部署它。 类文件 要修改企业 Bean 的一个类文件,先修改源文件,然后重新编译 例如,如果你想修改 1. 编辑 2. 用 ant converter 命 3. 在 deploytool 中选择菜单:Tools\Update Files 在 Update Files 对话框中,如果 转到第 6 步。如果列在下面的列表中,它们的修改还没有被发现。选择这些文件中的 一个点击 Edit Search Paths 按钮 5. 在 Edit Search Paths 对话框中指定 Update Files 对话 a) 在 Search Root 域中输入查找开始的全路径 b) 在 Path Dire 里的路径都是用对 Search Root 的相对路径 c) 确定 用 Deploying 复选框 不会弹出 Update Files 对话框。 改变 WAR 文件的内容步骤相同。Update Files 操作会检查包括 HTML 和 JSP 改动,如果你改动了 index.jsp 文件,仍 从 src 目录拷贝到 build 目录。 以下步骤可以向 EJB JAR 或者 WAR 文件中加入新文件: 1. 在 deploytool 的树视图中选择目标 JAR 或者 WAR 文件 2. 选择 3. 点击 4. 添加需要的文件确定 5. 在主窗口中选择菜单 新部署使修改生效。例如一下步骤将ConverterBean的 在 deploytool 中选中 ConverterApp 节点 2. 选择 JNDI Names 选项页 3. 将两个表中所有 JNDI Name 列的内容改为 Atypo
4.在主窗口中选择File\Save菜单 5.用Tools\Update And Redeploy菜单重新部署 十一。常见问题和解决方法 无法启动J2EE服务器 命名和目录服务端口冲突 症状:在你用-verbose参数启动J2EE服务器时,显示如下信息: J2EE server listen port:1050 RuntimeException:Could not initialize server... 解决办法:其他应用程序占用了1050端口。停止J2EE服务器,将J2 EE SDK安装目录下 的config/orb.properies文件里的默认端口10s0改为别的端口。默认端口的更多信息清参考 J2 EE SDK的下载包的配置说明。 Web服务端口冲突 症状 LifecvcleException:HttpConnector 80001.open java.net BindException:Address in use.. 解决办法:端口80O0被占用,编辑config/meb.properties文件更改该端口 不正确的XL解析器 症状:启动2EE服务器时出现如下错误: Exception in thread"main" javax.xml.parsers.FactoryConfigurationError: org apache.xerces.jaxp.SAXParserFactoryImpl at. 解决办法:删除J2SE安装目录下的jre/ib/jaxp.properties文件 编译出错 ant找不到Build文件 症状:执行ant converter命令时,出现如下错误 Buildfile:build.xml does not exist! Build failed 解决办法:在执行ant命令前,进入j2 eetutorial/examples./src目录。如果你想在当前目录下 执行ant命令,必须在命令里指定Build文件。例如: ant-buildfile C:\build.xml converter 编译器不能解析符号 症状:执行ant converter命令时,编译器报告如下错误: cannot resolve symbol BUILD FAILED Compile failed,messages should have been provided 解决办法:确定你的J2 EE HOME环境变量设置正确(参考本章第一节)
4. 在主窗口中选择 File\Save 菜单 5. 用 Tools\Update And Redeploy 菜单重新部署 十一。常见问题和解决方法 无法 命名 en port: 1050 unt e server... 止 J2EE 服务器,将 J2EE SDK 安装目录下 口 1050 改为别的端口。默认端口的更多信息清参考 置说明。 Web 服 : in use... 占用,编辑 config/web.properties 文件更改该端口 不正确 E a ctoryImpl at ... 装目录下的 jre/lib/jaxp.properties 文件 编译出 ant 下错误: file: build.xml does not exist! 解决 j2eetutorial/examples./src 目录。如果你想在当前目录下 al\examples\src\build.xml converter 编译 症状 . 启动 J2EE 服务器 和目录服务端口冲突 症状:在你用-verbose 参数启动 J2EE 服务器时,显示如下信息: J2EE server list R imeException: Could not initializ 解决办法:其他应用程序占用了 1050 端口。停 的 config/orb.properies 文件里的默认端 J2EE SDK 的下载包的配 务端口冲突 症状: LifecycleException: HttpConnector[8000].open java.net.BindException: Address 解决办法:端口 8000 被 的 XML 解析器 症状:启动 J2EE 服务器时出现如下错误: xception in thread "main" javax.xml.parsers.FactoryConfigurationError: org.apache.xerces.jaxp.SAXP rserFa 解决办法:删除 J2SE 安 错 找不到 Build 文件 症状:执行 ant converter 命令时,出现如 Build Build failed. 办法:在执行 ant 命令前,进入 执行 ant 命令,必须在命令里指定 Build 文件。例如: ant -buildfile C:\j2eetutori 器不能解析符号 :执行 ant converter 命令时,编译器报告如下错误: cannot resolve symbol ... BUILD FAILED .. Compile failed, messages should have been provided 解决办法:确定你的 J2EE_HOME 环境变量设置正确(参考本章第一节)
arl.4在你运行客户端后不编译例子 症状:antl4显示如下错误: The filename,directory name,or volume label syntax is Incorrect 解决办法:使用antl.3。l.4版的ant.bat脚本和J2 EE SDK的脚本都使用JAVACMD环境变 量。例如SDK的runclient.bat脚本设置JAVACMD的值会引起antbat执行错误。 部署出错 C1 asspath里不正确的XML解折器 症状:错误提示如下 [java.rmi.RemoteException:Error saving/opening Deployment Error:Bad mapping of key(0)class), not found:com.sum.enterprise. 解决办法:在J2SE安装目录的jr心ib/e子目录下别除jap,jar文件。这个文件里的XM 解析器跟J2EE服务器不兼容。如果你没有jaxp.jar文件,或许你的classpath指向Tomcat 的XML解析器。这种情况你需要将该路径从classpath环境变量中别除。 Remote Home ,接口被设置成Local Home接口 症状:错误提示如下: LocalHomelmpl must be declared abstract It does not define javax.ejb.HomeHandle getHomeHandle( from interface javax eib.EJBHome. 解决办法:从EAR文件中将企业Bean别除(Edit\Delete菜单),然后用新建企业Bean向 导重新创建该企业Bean。在向导的General对话框中为Remote Home Interface和Remote Interface选择值。 J2EE应用程序客户端运行时错误 客户端抛出NoClassDefFoundError 症状:错误提示如下: ter.ConverterHome 解决办法:该错误出现在当客户端找不到ConverterAppClient.jar里的类时。确定你是按照 运行2EE应用程序客户端一节的步骤做的。 客户端找不到ConverterApp..ear 症状:错误提示如下: IOException:ConverterApp.ear does not exist 解决办法:确定ConverterApp.car文件存在并且你在命令中用--client参数指示正确 runclient-client ConverterApp.ear-name ConverterClient 参考创建J2EE应用程序和运行J2EE应用程序客户端两节。 客户端找不到ConverterClient组件 症状:错误提示如下:
ant1. 在你运行客户端后不编译例子 症状:ant1.4 显示如下错误: 4 , or volume label syntax is 行错误。 Clas 的 XML 解析器 提示如下: [ ng/opening eployment.xml.ApplicationNode 目录的 jre/lib/ext 子目录下删除 jaxp.jar 文件。这个文件里的 XML Rem H p r EAR 文件中将企业 Bean 删除(Edit\Delete 菜单),然后用新建企业 Bean 向 Bean。在向导的 General 对话框中为 Remote Home Interface 和 Remote J2EE 客户端 oClassDefFoundError 症状:错误提示如下: java.lang.NoClassDefFoundError:converter.ConverterHome 解决办法:该错误出现在当客户端找不到 ConverterAppClient.jar 里的类时。确定你是按照 运行 J2EE 应用程序客户端一节的步骤做的。 客户端找不到 ConverterApp.ear 症状:错误提示如下: IOException: ConverterApp.ear does not exist 解决办法:确定 ConverterApp.ear 文件存在并且你在命令中用-client 参数指示正确: runclient -client ConverterApp.ear -name ConverterClient 参考创建 J2EE 应用程序和运行 J2EE 应用程序客户端两节。 客户端找不到 ConverterClient 组件 症状:错误提示如下: The filename, directory name incorrect. 解决办法:使用 ant1.3。1.4 版的 ant.bat 脚本和 J2EE SDK 的脚本都使用 JAVACMD 环境变 量。例如 SDK 的 runclient.bat 脚本设置 JAVACMD 的值会引起 ant.bat 执 部署出错 spath 里不正确 症状:错误 ... ]java.rmi.RemoteException:Error savi Deployment Error:Bad mapping of key{0} class{1}, not found: com.sum.enterprise.d 解决办法:在 J2SE 安装 解析器跟 J2EE 服务器不兼容。如果你没有 jaxp.jar 文件,或许你的 classpath 指向 Tomcat 的 XML 解析器。这种情况你需要将该路径从 classpath 环境变量中删除。 ote Home 接口被设置成 Local Home 接口 症状:错误提示如下: Local omeIm l must be decla ed abstract. It does not define javax.ejb.HomeHandle getHomeHandle() from interface javax.ejb.EJBHome. 解决办法:从 导重新创建该企业 Interface 选择值。 应用程序客户端运行时错误 抛出 N