![]() |
解决向集群部署 Workshop 应用程序时产生 RuntimeExceptions 的问题 |
| 问题描述 可以向一个集群部署所有 WebLogic Workshop 应用程序。在向集群部署包含 JWS 或 JPD 文件的 Workshop 应用程序时,某些情况下会产生下列异常: |
| java.lang.RuntimeException: frontEndHost is not configured for the cluster and hostname is not set in wlw-config or wlw-runtime-config |
| 或 |
| java.lang.RuntimeException: Server <ServerName> in cluster <ClusterName> does not have a configured cluster address |
| 本模式将讨论这些异常的产生原因,并将详细给出防止产生这些异常的措施。 故障排除 请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。 快速链接 为什么发生此问题? SOAP endpoint 不负责代理服务器或负载平衡 要了解此问题,先要了解 Web Service 的基础知识。所有 Web Service 都以 SOAP endpoint 作为唯一标识。SOAP endpoint 是下面这种格式的 URL:http://workshop.bea.com:7001/web/Hello.jws?WSDL 此 URL 包含访问 Web Service 所使用的协议的相关信息,还包含服务器运行时所在的主机名及服务器监听 HTTP 连接所使用的端口号的相关信息。 WebLogic Workshop 在单服务器模式下运行时会用当前部署了应用程序的服务器中的信息替换 SOAP endpoint。 在需要向集群部署 Web Service 时,这就会引发问题。 假定有以下配置: |

| <?xml version="1.0" encoding="UTF-8"?> <wlw-runtime-config xmlns="http://www.bea.com/2003/03/wlw/config/"> <wlw-config application-name="TestApp" context-path="/web"> <hostname>myhost</hostname> <protocol>http</protocol> <http-port>7001</http-port> </wlw-config> </wlw-runtime-config> |
| java.lang.RuntimeException: frontEndHost is not configured for the cluster and hostname is not set in wlw-config or wlw-runtime-config
|
| <?xml version="1.0" encoding="UTF-8"?> <wlw-runtime-config xmlns="http://www.bea.com/2003/03/wlw/config/"> <wlw-config application-name="TestApp" context-path="/web"> <hostname>myhost</hostname> <protocol>http</protocol> <http-port>7001</http-port> </wlw-config> <wlw-config application-name="TestApp" context-path="/webapp"> <hostname>myhost</hostname> <protocol>http</protocol> <http-port>7001</http-port> </wlw-config> </wlw-runtime-config> |
| 解决此问题还有另外两种方法,下面就介绍它们。 方案 1 - wlw-config.xml 文件 所有 Web、Web Service 及进程项目的 WEB-INF 目录中都有一个名为 wlw-config.xml 的文件。该文件的格式如下: |
| <?xml version="1.0" encoding="UTF-8"?> <wlw-config xmlns="http://www.bea.com/2003/03/wlw/config/"> <!-- <hostname>production_host</hostname> --> <!-- <protocol>http</protocol> --> <!-- <http-port>8000</http-port> --> <!-- <https-port>8003</https-port> --> <!-- <service> <class-name>com.myco.MyWebService</class-name> <protocol>https</protocol> </service> --> </wlw-config> |
| 请注意,在此文件中指定值与使用 wlw-runtime-config.xml 的作用相同,且实际上比较起来此方案更受约束。此文件的作用是将值作为生成过程的一部分硬编码到 EAR 文件中。对此文件做任何更改都必须再次生成应用程序。 使用此文件设置值后,即无法再使用 wlw-runtime-config.xml 文件进行覆盖。 文件范围是 Web 项目。因此,如果应用程序中有多个项目,则必须修改每个文件。 方案 2 - FrontendHost 另一个方案是在服务器控制台中指定 FrontendHost 值。这样将使 WSDL 具有正确的值。请注意,这会影响在服务器上部署的所有应用程序。 考虑到各种方案所提供的功能,BEA 建议使用 wlw-runtime-config.xml 文件方案,因为它只影响特定 Workshop 应用程序,而且允许用户在运行时对其进行更改而不需要重新生成应用程序。请注意,在使用 wlw-runtime-config.xml 文件指定主机名时,对此文件做任何更改都必须重新启动服务器。 其它成因 如果项目中没有可用的 Web Service,却仍然产生异常,请检查 Service Pack 版本。在 WLW 8.1.4 之前的版本中存在一种限制,也就是即使将 service 控件作为项目的一部分使用,仍会要求此文件存在。 此问题的变通方法是创建一个虚拟 wlw-runtime-config.xml 文件,其中为每个使用 service 控件的项目都提供了一个 wlw-config 条目。文件中指定的值不必为有效值,实际上永远不会使用这些值。BEA 建议使用类似“DummyNameNoWebService”的名称,这样可以确保在您决定将某个 Web Service 作为同一项目的一部分实现时,该值具有足够的描述性,能够让管理员知道需要修改它。 如果应用程序不包含任何可通过 HTTP 访问的 Web Service,且 JMS 是访问服务时唯一可以使用的协议,则不需要此文件。不过,WLW 8.1.4 中当前有一个限制,要求此文件必须存在。此问题的变通方法与上一个相同,也是使用虚拟 wlw-runtime-config.xml 文件。 返回页首 集群地址问题 向集群部署 Workshop 应用程序时出现的另一个常见问题是下列异常: |
| java.lang.RuntimeException: Server <ServerName> in cluster <ClusterName> does not have a configured cluster address |
| 出现此异常的原因是一项要求,即部署 Workshop 应用程序的集群必须配置集群地址值。 可以在控制台或 config.xml 中像下面这样配置此值: <Cluster Name="myclust" ClusterAddress="host:7001,host:7003" MulticastAddress="237.0.0.1"/>
快速参考 |
| 已知问题 您可以定期查看您的 Workshop 版本的“发行说明”以获得 Service Pack 中的“已知问题”或“已解决问题”的详细信息,而且还可浏览集群和 RuntimeException 方面的问题。 方便起见,下面提供了这些发行说明的链接: 搜索还将返回“发行说明”,以及其它“支持解决方法”和与 CR 相关的信息(在需要更多帮助?中说明)。如果客户签订了技术支持合同,则可以登录 http://support.bea.com/,登录后会看到为 Solutions 和 Bug Central 提供的 Browse portlet,可在其中按产品版本浏览最新提供的 CR。 |
| 需要更多帮助? 如果您已经理解这个模式,但仍需要其它帮助,您可以:
|
|
反馈 请给我们提供您的意见,说明此支持诊断模式“解决向集群部署 Workshop 应用程序时产生 RuntimeExceptions 的问题”一文是否有所帮助、您需要的任何解释,以及对支持诊断模式的新主题的任何要求。 |
|
免责声明: 依据 BEA 与您签署的维护和支持协议条款,BEA Systems, Inc. 在本网站上提供技术技巧和补丁供您使用。虽然您可以将这些信息和代码与您获得 BEA 授权的软件一起使用,但 BEA 并不对所提供的技术技巧和修补程序做任何形式的担保,无论是明确的还是隐含的。 本文档中引用的任何商标是其各自所有者的财产。有关完整的商标信息,请参考您的产品手册。 |