您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 专题文章---常见部署问题故障排除
部署问题故障排除问题描述:WebLogicServer无法正确部署应用程序。服务器选择的是旧版本的应用程序,而不是重新部署的新版本的应用程序。故障排除:请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。1、可部署应用程序类型和部署目标类型:部署单元是指根据J2EE规范进行组织并可部署到WebLogicServer的J2EE应用程序(企业应用程序或Web应用程序)或独立J2EE模块(EJB或资源适配器)。WebLogicServer也支持WebService模块的部署,J2EE规范中并未包含此类模块。一个企业应用程序由一个或多个下列J2EE应用程序或模块组成:Web应用程序EnterpriseJavaBean(EJB)模块资源适配器模块使用jar实用程序打包的部署单元使用各自专用的文件扩展名,部署单元的类型决定它使用的文件扩展名:EJB打包后生成的文件的扩展名是.jar。Web应用程序打包后生成的文件的扩展名是.war。资源适配器打包后生成的文件的扩展名是.rar。企业应用程序打包后生成的文件的扩展名是.ear。WebService打包后生成的文件的扩展名可以是.ear或.war。大多数部署单元均可以打包文件格式或展开目录格式进行部署,只有资源适配器模块例外,它不能以展开目录格式进行部署。部署目标可以是WLS服务器、群集或虚拟主机。2、部署工具WLS提供了以下几种模式来部署应用程序:通过管理控制台weblogic.Deployer工具wldeployAnt任务weblogic.management.deployAPI如果是以开发模式运行,则可以通过复制应用程序目录下的模块进行部署。3、Stage模式WebLogicServer为分级文件提供了以下三种不同的模式:stage模式、nostage模式和external_stage模式。下表详细说明了上述模式的工作方式:(English)stage模式的缺省值:对于被管服务器:stage模式的缺省值是stage,这意味着缺省的stage行为是将应用程序文件复制到其目标被管服务器对于管理服务器:stage模式的缺省值是nostage,这意味着缺省stage行为是从提供的源位置进行部署4、开发/生产模式可以利用applications目录在开发服务器中快速部署应用程序。WebLogicServer实例以开发模式运行时,会自动部署您置于该目录中的所有应用程序或模块。自动部署功能会检查applications文件夹,以确定是否有新生成的应用程序或现有应用程序是否有更改,然后会动态地部署这些更改。AutoUpdateInterval的缺省值为3000毫秒。可以通过管理控制台更改该值,具体方法为:在左窗格中选择域的名称,然后在“Applications”选项卡中更改间隔值。对于以开发模式运行的服务器,自动部署功能处于启用状态。要禁用自动部署功能,请使用下列方法之一将服务器转入生产模式:在管理控制台中,在左侧窗格中单击域的名称,然后在右侧窗格中选中“ProductionMode”复选框。在命令行中,请使用以下参数启动域的管理服务器:-Dweblogic.ProductionModeEnabled=true缺省情况下,被管服务器与管理服务器的启动模式相同。在WLS8.1SP3及以后的版本中,您可以更改被管服务器的启动模式,使之不同于管理服务器的启动模式(在8.1SP3中,已通过CR127698/CR132901(English)修正了该问题)。5、展开目录/归档格式大多数部署单元均可以打包文件格式或展开目录格式进行部署。下面列出了这些格式的常见优点和缺点:以展开目录格式部署时,可以更新静态文件,以归档格式部署时则无法进行更新。以展开目录格式部署时,可以重新部署应用程序的一部分而无需重新部署整个应用程序。以展开目录格式部署时,可以通过控制台编辑部署描述符。如果以nostage模式和展开目录格式进行部署,WebLogic会自动检测部署的JSP或Servlet发生的更改,并更新部署。以归档格式部署便于打包模块和应用程序来进行展开目录。打包文件更易于复制,因为与展开目录格式的目录比较,它们占用的文件句柄数较少,而且由于进行了文件压缩,它们可以节省磁盘空间。6、排除部署故障下面列出了可能会遇到的常见部署故障:部署应用程序时,如果出现java.util.ZipException错误,请证实以下情况:a.如果以展开目录格式部署,拥有对ear应用程序文件或目录的读/写权限b.应用程序的路径正确c.应用程序路径名称中没有多余的空格。有关详细信息,请参阅CR120603(English),该问题已在8.1SP2中得到解决。如果部署描述符application.xml不正确,则可能导致与以下类似的部署异常:weblogic.management.ApplicationException:weblogic.management.DeploymentException:Errorwhileloadingdescriptors:Errorparsingfile'META-INF/application.xml如果您拥有部署应用程序的访问权限,请证实您拥有在指定目标上部署应用程序的权限。有关详细信息,请参阅CR135329(English),该问题已在81SP3中得到解决。部署异常可能与如下所示的类似:Accessnotallowedforsubject:principals=[foouser,Deployers],onResourceType:ClusterAction:execute,Target:addDeployment如果在Windows系统的计算机上运行weblogic.Deployer以在Unix系统的服务器上部署应用程序,则会发生类似的异常:[java]weblogic.management.ApplicationException:[J2EE:160029]I/Oerrorwhilereadingdeployment-java.io.FileNotFoundException:Nosuchpathc:\bea\test/dir/test.ear这是由于部署程序在部署阶段构造的路径中混合使用了Windows和Unix两种格式(c:\bea\test/dir/test.ear)。要避免发生此类部署异常,需要使用weblogic.Deployer的-uploadweblogic.Deployer选项,这样在部署前应用程序文件会被上传到WebLogicServer。尽管在各服务器上进行单独部署时均告成功,但在向整个群集部署时却失败。请确认是否将ClusterConstraintsEnabled设置为true。缺省情况下,在当前可连接服务器上可以成功进行群集部署,当前不可连接服务器在可连接时才能进行群集部署。如果将ClusterConstraintsEnabled设置为true,则可以确保:只有当群集中的所有服务器都可连接时,在群集上进行2阶段动态部署才能成功。(有关如何配置ClusterConstraintsEnabled的详细信息,略)如果在部署/取消部署应用程序时遇到OutOfMemoryException,请尝试在启动脚本中这样设置Java选项:–XX:MaxPermSize=128M,也可以将其设置为更大的值,实际使用的值可根据堆大小来确定。如果正在部署大型应用程序,所需的部署超时大于缺省的60分钟超时值,则需要指定超时。可以在控制台中指定超时值,也可将其作为weblogic.Deployer的参数加以指定。请注意问题CR128537(English),该问题的故障现象是:为weblogic.Deployer设置的超时值未得到执行。7、排除更新失败故障如果正在进行重新部署,却发现部署的仍然是旧版本的应用程序,则需要确认以下各项:a.所使用的stage模式。目标服务器使用可用的部署文件:如果部署单元是以stage模式进行部署,则使用部署文件的本地副本;如果部署单元是以nostage模式进行部署,则使用原始部署文件。b.确认服务器的stage目录。有时需要清理stage目录,以确保应用程序得到正确的重新部署,且部署的是新版本的应用程序。缺省stage目录在domainDir\Serverdir\stage下。c.确认.wlnotdelete是否包含旧版本的应用程序。可能需要在Weblogic服务器退出时清理该目录。d.如果需要更新静态文件,请确保应用程序是以展开目录格式部署的。e.确认系统类路径中不存在相同的应用程序或EJBjar文件。f.如果对新模块使用weblogic.Deployer–deploy选项来将其添加到已部署的应用程序中,则需要确保已对application.xml进行了更新,使其包含此新模块,否则将不会部署此新模块。g.如果正在重新部署单独的EJB实现类,却发现使用的仍是旧版本,请确保weblogic-ejb-jar.xml中的节enable-bean-class-redeploy的设置值为true。h.如果在servlet中启动自己的守护线程,则重新部署webapp时WebLogic将无法停止这些线程,因而仍会继续运行旧版本。8、排除部署时的JSP预编译故障如果正在部署某个webapp,其时weblogic.xml中的标志‘precompile’的设置值为true,且已经使用jspc预编译了JSP,则预期的行为将是:部署时只对修改过的JSP而不是所有JSP进行预编译。如果您发现对所有JSP都进行了预编译,则需要检查以下各项:预编译和部署时使用的WLS版本及包含一次性补丁的ServicePack级别相同。开发计算机(进行编译的计算机)与部署计算机使用的时区相同。编译过的类位于WEB-INF\classes\jsp_servlet下,其中jsp_servlet通常是缺省的PackagePrefix;如果在weblogic.xml的jsp-descriptor中或WEB-INF\lib下的jar文件中对其进行了更改,则将是更改后的值。这里存在一个已知问题,即如果以war文件而非展开目录格式进行部署,将会对子上下文中的JSP进行预编译。在8.1SP3中,问题CR124505(English)已得到解决。10、调试标志可以启用以下标志:MasterDeployer、SlaveDeployer、DeploymentTaskRuntime、DeployerRuntime和ApplicationContainer。请注意,要启用这些调试标志,需要在启动脚本中将它们作为weblogic.Debug的参数,因为它们在ServerDebugMbean中无法单独使用。例如,要启用weblogic.MasterDeployer,需要在启动脚本的JAVA_OPTIONS部分添加以下内容:-Dweblogic.Debug=weblogic.MasterDeployer如果要启用多个标志,可以使用逗号进行分隔,如下所示:-Dweblogic.Debug=weblogic.MasterDeployer,weblogic.SlaveDeployer,weblogic.DeploymentTaskRuntime,weblogic.DeployerRuntime,weblogic.ApplicationContainer请确保StdoutDebugEnabled的设置值为“true”。可以在config.xml中确认该项设置。可以通过控制台或命令行来启用调试到stdout选项:-Dweblogic.StdoutDebugEnabled=true
本文标题:专题文章---常见部署问题故障排除
链接地址:https://www.777doc.com/doc-2790397 .html