ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ZT:WebLogic部署不成功诊断方法

ZT:WebLogic部署不成功诊断方法

原创 Linux操作系统 作者:cargoo 时间:2011-11-24 16:18:31 0 删除 编辑
问 题描述:
  • WebLogic Server 无法正确部署应用程序
  • 服务器选择的是旧版本的应用程序,而不是重新部署的新版本的应用程序。
故障排除:
请注意,并非下 面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。
可 部署应用程序类型和部署目标类型
部署单元是指根据 J2EE 规范进行组织并可部署到 WebLogic Server 的 J2EE 应用程序(企业应用程序或 Web 应用程序)或独立 J2EE 模块(EJB 或资源适配器)。

WebLogic Server 也支持 Web Service 模块的部署,J2EE 规范中并未包含此类模块。

一个企业应用程序由一个或多个下列 J2EE 应用程序或模块组成:
  •  Web 应用程序
  •   Enterprise Java Bean (EJB) 模块
  •   资源适配器模块
使用 jar 实用程序打包的部署单元使用各自专用的文件扩展名,部署单元的类型决定它使用的文件扩展名:
  •    EJB 打包后生成的文件的扩展名是 .jar。
  •    Web 应用程序打包后生成的文件的扩展名是.war。
  •    资源适配器打包后生成的文件的扩展名是.rar
  •    企业应用程序打包后生成的文件的扩展名是.ear。
  •    Web Service 打包后生成的文件的扩展名可以是.ear或.war。
大多数部署单元均可以打包文件格式或展开目录格式进行部署,只有资源适配器模块例 外,它不能以展开目录格式进行部署。
部署目标可以是 WLS 服务器、群集或虚拟主机。


部署工具
WLS 提供了以下几种模式来部署应用程序:
  •   通过管理控制台
  •   weblogic.Deployer 工具
  •   wldeploy Ant 任务
  •   weblogic.management.deploy API
  •   如果是以开发模式运行,则可以通过复制应用程序目录下的模块进行部署。 
  有关详细信息,请查阅开发/生产模式差异。

有关部署工具的详细信息,请参阅 http://e-docs.bea.com/wls/docs81/deployment/tools.html#999152(English)。



Stage 模式
WebLogic Server 为分级文件提供了以下三种不同的模式:stage 模式、
nostage模式external_stage模式。下表详细说明了上述模式的工作方式:
http://edocs.bea.com/wls/docs81/deployment/overview.html#1036753

(English) stage 模式的缺省值:
  • 对于被管服务器:stage 模式的缺省值是stage,这意味着缺省的 stage 行为是将应用程序文件复制到其目标被管服务器
  • 对于管理服务器:stage 模式的缺省值是nostage,这意味着缺省 stage 行为是从提供的源位置进行部署


开 发/生产模式
可以利用 applications 目录开发服务器中 快速部署应用程序。WebLogic Server 实例以开发模式运行时,会自动部署您置于该目录中的所有应用程序或模块。

自动部署功 能会检查 applications 文件夹,以确定是否有新生成的应用程序或现有应用程序是否有更改,然后会动态地部署这些更改。
Auto Update Interval的缺省值为 3000 毫秒。可以通过管理控制台更改该值,具体方法为: 在左窗格中选择域的名称,然后在“Applications”选项卡中更改间隔值。

对于以开发模式运行的服务器,自动部署功能处于启用状 态。要禁用自动部署功能,请使用下列方法之一将服务器转入生产模式:
  • 在管理控制台中,在左侧窗格中单击域的名称,然后在右侧窗格中选中“Production Mode”复选框。
  • 在命令行中,请使用以下参数启动域的管理服务器:
                   -Dweblogic.ProductionModeEnabled=true

缺省情况下,被管服务 器与管理服务器的启动模式相同。在 WLS 8.1 SP3 及以后的版本中,您可以更改被管服务器的启动模式,使之不同于管理服务器的启动模式(在 8.1SP3 中,已通过CR127698 / CR132901(English) 修正了该问题)。



展 开目录/归档格式
大多数部署单元均可以打包文件格式或展开目录格式进行部署。下面列出了这些格式的常见优点和缺 点:
  • 以展开目录格式部署时,可以更新静态文件,以归档格式部署时则无法进行更新。
  • 以展开目录格式部署时,可以重新部署应用程序的一部分而无需重新部署整个应用程序。
  • 以展开目录格式部署时,可以通过控制台编辑部署描述符。
  • 如果以nostage模式和展开目录格式进行部署,WebLogic 会自动检测部署的 JSP 或 Servlet 发生的更改,并更新部署。
  • 以归档格式部署便于打包模块和应用程序来进行展开目录。打包文件更易于复制,因为与展开目录格式的目录比较,它们占用的文件句柄数较 少,而且由于进行了文件压缩,它们可以节省磁盘空间。



排除部署故障
 下面 列出了可能会遇到的常见部署故障:
  • 部署应用程序时,如果出现java.util.ZipException错误,请证实以下情况:
    •  如果以展开目录格式部署,拥有对 ear 应用程序文件或目录的读/写权限
    •  应用程序的路径正确
    •  应用程序路径名称中没有多余的空格。有关详细信息,请参阅CR120603(English),该问题已在 8.1SP2 中得到解决。
  • 如果部署描述符application.xml不正确,则可能导致与以下类似的部署异常: 
    weblogic.management.ApplicationException: weblogic.management.DeploymentException: Error while loading descriptors: Error parsing file 'META-INF/application.xml
  • 如果您拥有部署应用程序的访问权限,请证实您拥有在指定目标上部署应用程序的权限。有关详细信息,请参阅CR135329(English),该问题已在 81SP3 中得到解决。部署异常可能与如下所示的类似: 
    Access not allowed for subject:principals=[foouser, Deployers], on ResourceType:Cluster Action:execute, Target:addDeployment
  • 如果在 Windows 系统的计算机 上运行weblogic.Deployer以在 Unix 系统的服务器上部署应用程序,则会发生类似的异常:
    [java]weblogic.management.ApplicationException:[J2EE:160029]I/O error while reading deployment -java.io.FileNotFoundException:No such path c:\bea\test/dir/test.ear
    这是由于部署程序在部署阶段构造的路径中混合使用了 Windows 和 Unix 两种格式 (c:\bea\test/dir/test.ear)。 要避免发生此类部署异常,需要使用weblogic.Deployer的-uploadweblogic.Deployer选项,这样在部署前应用程序文件会被上传到 WebLogic Server。有关详细信息,请查阅http://e-docs.bea.com/wls/docs81/deployment/tools.html#999152
    (English) 中的所有选项。
  • 尽管在各服务器上进行单独部署时均告成功,但在向整个群集部署时却失败。请确认是否将ClusterConstraintsEnabled设置为 true。缺省情况下,在当前可连接服务器上可以成功进行群集部署,当前不可连接服务器在可连接时才能进行群集部署。
  • 如果在部署/取消部署应用程序时遇到OutOfMemoryException,请尝试在启动 脚本中这样设置 Java 选项:?CXX:MaxPermSize=128M, 也可以将其设置为更大的值,实际使用的值可根据堆大小来确定。有关此选项的详细信息,请查阅http://java.sun.com/docs/hotspot/VMOptions.html(有关已在 8.1SP3 中得到解决的OutOfMemory异常问题的信息,请参阅CR127393CR132685(English))
  • 如果正在部署大型应用程序,所需的部署超时大于缺省的 60 分钟超时值,则需要指定超时。可以在控制台中指定超时值,也可将其作为weblogic.Deployer的参数加以指定。请注意问题CR128537(English),该问题的故障现象是:为weblogic.Deployer设置的超时值未得到执行。该问题在 8.1SP3 中已得到解决。


排除更新失败故障
如果正在 进行重新部署,却发现部署的仍然是旧版本的应用程序,则需要确认以下各项:
  • 所使用的 stage 模式。目标服务器使用可用的部署文件:如果部署单元是以stage模式进行部署,则使用部署文件的本地副本;如果部署单元是以nostage模式进行部署,则使用原始部署文件。
  • 确认服务器的 stage 目录。有时需要清理 stage 目录,以确保应用程序得到正确的重新部署,且部署的是新版本的应用程序。缺省 stage 目录在domainDir\Serverdir\stage下。
  • 确认.wlnotdelete是否包含旧版本的应用程序。可能需要在 Weblogic 服务器退出时清理该目录。
  • 如果需要更新静态文件,请确保应用程序是以展开目录格式部署的。
  • 确认系统类路径中不存在相同的应用程序或 EJB jar 文件。
  • 如果对新模块使用weblogic.Deployer ?Cdeploy选项来将其添加到已部署的应用程序中,则需要确保已对application.xml进行了更新,使其包含此新模块,否则将不会部署此新模块。
  • 如果正在重新部署单独的 EJB 实现类,却发现使用的仍是旧版本,请确保weblogic-ejb-jar.xml中的节的设置值为 true。
  • 如果在 servlet 中启动自己的守护线程,则重新部署 webapp 时 WebLogic 将无法停止这些线程,因而仍会继续运行旧版本。  



排 除部署时的 JSP 预编译故障
如果正在部署某个 webapp,其时
weblogic.xml中的标志‘precompile’的设置值为 true,且已经使用 jspc 预编译了 JSP,则预期的行为将是:部署时只对修改过的 JSP 而不是所有 JSP 进行预编译。如果您发现对所有 JSP 都进行了预编译,则需要检查以下各项:  
  • 预编译和部署时使用的 WLS 版本及包含一次性补丁的 Service Pack 级别相同。
  • 开发计算机(进行编译的计算机)与部署计算机使用的时区相同。
  • 编译过的类位于WEB-INF\classes\jsp_servlet下,其中jsp_servlet通常是缺省的 PackagePrefix;如果在weblogic.xml的jsp-descriptor中或WEB-INF\lib下的 jar 文件中对其进行了更改,则将是更改后的值。
  • 这里存在一个已知问题,即如果以 war 文件而非展开目录格式进行部署,将会对子上下文中的 JSP 进行预编译。在 8.1SP3 中,问题CR124505(English) 已得到解决。
有关如何排除 JSP 重新编译故障的更多详细信息,请参阅调 试“预编译的 JSP 被重新编译”



已知问题
除查阅上面提到的特定 CR 外,还可以定期查看所用 WLS 版本的发行说明,了解 Service Pack 中的已知问题或已解决问题的详细信息并浏览与部署有关的问题。方便起见,下面提供了这些发行说明的链接:
使用搜索功能 也可以搜索到“Release Notes”,还可以搜索到其它支持解决办法及与 CR 有关的信息,如需要更多帮助?中所提到的内容。如果客户签订了技术支持合同,则可以登录http://support.bea.com/,登录后会看到为 Solutions 和 BugCentral 提供的 Browse portlet,可在其中按产品版本浏览最新提供的 CR。



调试标志
可 以启用以下标志:MasterDeployerSlaveDeployerDeploymentTaskRuntimeDeployerRuntimeApplicationContainer

请 注意,要启用这些调试标志,需要在启动脚本中将它们作为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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/5359/viewspace-711943/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-02-10

  • 博文量
    105
  • 访问量
    216702