转 WebLogic部署不成功诊断方法

出自 :http://www.lwbst.com/NewsView.do?newsID=5792

WebLogic 部署问题故障排除
 
→相关文章
· WebLogic部署问题故障排除
· unix后台启动weblogic命令
· 如何解决与WEBLOGIC 相关的中文问题
· 将weblogic8.1作为windows服务 的解决方法
· 性能测试参数
· BEA Weblogic 调优
· 配置BEA WebLogic 8.1 JDBC连接
· WebLogic初步研究
来源:网络 [2007-04-18] 作者:张水傲 编辑:admin
 
问 题描述:
  • 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。



调试标志
可 以启用以下标志:MasterDeployer、SlaveDeployer、DeploymentTaskRuntime、DeployerRuntime 和 ApplicationContainer。

请 注意,要启用这些调试标志,需要在启动脚本中将它们作为 weblogic.Debug 的参数,因为它们在 ServerDebug Mbean 中无法单独使用。例如,要启用 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/12474069/viewspace-659864/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12474069/viewspace-659864/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值