支持总线的 Web Service 的故障诊断技巧
请使用下面这组特定技巧来帮助您对使用支持服务集成总线的 Web Service 时遇到的问题进行故障诊断。
为了帮助您确定并解决支持总线的 Web Service 的问题,请使用 WebSphere® Application Server 跟踪和日志记录工具(如设置组件跟踪 (CTRACE)所述)。
要对支持总线的 Web Service 启用跟踪,请将应用程序服务器跟踪字符串设置为 com.ibm.ws.sib.webservices.*=all=enabled。如果遇到您认为可能与支持总线的 Web Service 相关的问题,那么可以在 WebSphere Application Server 管理控制台中以及在应用程序服务器的 SystemOut.log 文件中查找错误消息。您还可以启用应用程序服务器调试跟踪来提供详细的异常转储。
支持总线的 Web Service:已知限制提供了使用支持总线的 Web Service 时存在的主要已知限制的列表。
WebSphere Application Server 系统消息是从各种来源(包括应用程序服务器组件和应用程序)记录的。由应用程序服务器组件和相关 IBM 产品记录的消息以唯一消息标识开头,此标识指示了发出该消息的组件和应用程序。支持总线的 Web Service 组件的前缀是 CWSWS。
消息主题包含有关所有 WebSphere Application Server 消息的信息(按消息前缀建立索引)。每条消息都提供了问题说明以及有关任何可以用来解决该问题的操作的详细信息。
- 当出站服务等待目标服务的响应时,服务集成总线超时
- 需要手动安装支持总线的 Web Service 应用程序或资源
- 客户机应用程序在 WebSphere Application Server V5.1 中正常工作,但在更高版本中工作时遇到问题
- 尝试创建要与 SDO 存储库配合使用的 Informix 数据库时出现错误消息
- 未列示发布到 UDDI 注册中心的入站服务并且重新发布未成功
- 使用 JMS 来连接到远程总线要求进行额外的配置以允许 Web Service 客户机连接到该总线
- 通过服务集成总线传递大型附件时,在 Java 虚拟机中发生内存不足错误
- 尝试使用管理控制台创建新的端点侦听器配置时发生错误
- 尝试通过管理控制台创建新的入站服务时出错
- 处理带有附件的 SOAP 消息时发生问题
- 如果不同机器上的 JMS 资源具有相同的名称,那么将发生 JNDI 查找错误
- 无法根据 SOAP 故障消息确定具体问题
- 使用 SOAP over JMS 端点侦听器传递大型消息时,发生侦听器端口超时错误
支持总线的 Web Service 无法连接到安全服务集成总线
CWSIV0801E: The exception javax.resource.ResourceException:
CWSIV0958E: The authorization exception
com.ibm.wsspi.sib.core.exception.SINotAuthorizedException:
CWSIP0302E: A user HostServer is not authorized to access the messaging engine
xyzNode01.server1-xyz on bus xyz. was thrown while attempting to create a
connection to messaging engine 221C86B845BE5E8B using the activation
specification [<activation_specification_field_trace>].
was thrown during the creation of a connection
to messaging engine xyzNode01.server1-xyz on bus xyz.
缺省情况下,支持总线的 Web Service 组件可以通过服务集成资源适配器连接到安全的总线目标。因此,必须以同一方式更改配置。
- 通过总线连接者角色配置总线访问权。缺省情况下,每条总线连接者角色都包含名为 server 的组。此组的成员有权连接至总线。
- 服务集成资源适配器使用 J2C 激活规范与总线进行通信。缺省情况下,此激活规范包含设置为 true 的布尔定制属性 useServerSubject。此属性允许服务集成资源适配器作为服务器组的主体集(成员)连接至总线。
通过定义服务集成资源适配器用于访问总线的认证别名,可以覆盖此缺省配置。有关更多信息,请参阅覆盖总线支持的 Web Service 与安全总线之间的缺省安全性配置。
有关缺省配置以及修改或重设此配置的效果的详细信息,请参阅用于访问安全总线的支持总线的 Web Service 缺省配置。
- 文本“正在使用用户标识和密码创建连接”表示已找到系统,并且正在尝试使用为 J2C 激活规范配置的认证别名。
- 文本“未传递用户标识/密码。正在使用服务器主体集创建连接”表示已找到系统,并且正在尝试使用服务器主体集。
当出站服务等待目标服务的响应时,服务集成总线超时
java.net.SocketTimeoutException: Socket operation timed out before it could be completed
缺省超时值是 60 秒,因此,如果目标 Web Service 无法在 60 秒内进行响应,那么将发生此错误。可以通过对入站端口设置 timeout 定制属性来增大超时值,如入站端口 [设置]所述。
需要手动安装支持总线的 Web Service 应用程序或资源
- 支持总线的 Web Service 应用程序(这是允许通过服务集成总线来配置和访问 Web Service 的应用程序)。
- 服务集成技术资源适配器(用于在出站端口上调用 Web Service)。
- 端点侦听器应用程序(用来启用用于接收入站服务消息的消息点)。
但是,如果您确实必须手动安装其中一个此类应用程序,那么可以使用提供的 sibwsInstall.jacl 脚本按 WebSphere Application Server V6.0.x 主题:安装支持总线的 Web Service 应用程序和资源中给出的指示信息来完成此任务。
客户机应用程序在 WebSphere Application Server V5.1 中正常工作,但在更高版本中工作时遇到问题
您的客户机应用程序在 WebSphere Application Server V5.1 中正常工作,但在更高版本中工作时,因请求或响应的格式不良而引起问题。
与 WebSphere Application Server V5.1 相比,支持总线的 Web Service 将更彻底地检查 Web Service 消息的有效性。因此,某些使用了格式不良的请求或响应(消息部件的名称不正确)的客户机应用程序能够在 V5.1 中正常运行,但在更高版本中却被识别为格式不良。有关解决此问题要采取的步骤,请参阅是否允许格式不良的 SOAP 消息
在 WebSphere Application Server V5.1 上运行的 JAX-RPC 客户机使用 SOAP over JMS 来调用 Web Service 时出错
在 WebSphere Application Server V5.1 上运行的 JAX-RPC 客户机使用 SOAP over JMS 来调用在 V5 应用程序服务器上运行的 Web Service。在目标 MQ Series 队列上不需要用户标识或密码。将应用程序服务器迁移到更高版本之后,在使用缺省消息传递时,客户机请求将失败,这是因为现在已经启用了基本认证。
SibMessage W [:] CWSIT0009W: A client request failed in the
application server with endpoint <endpoint_name> in bus your_bus
with reason: CWSIT0016E: The user ID null failed authentication
in bus your_bus.
要了解用于解决此问题的步骤,请参阅以下服务集成技术故障诊断技巧:将 V5.1 应用程序服务器迁移到 WebSphere Application Server V7.0 或更高版本
尝试创建要与 SDO 存储库配合使用的 Informix 数据库时出现错误消息
您尝试创建要与 SDO 存储库配合使用的 Informix® 数据库失败,并接收到以下消息:未对非日志记录数据库进行事务隔离。
如果异常消息中显示了未对非日志记录数据库进行事务隔离,那么这是因为对使用的 Informix 数据库禁用了日志记录功能。要将 Informix 数据库与 SDO 存储库配合使用,必须启用日志记录功能。
javax.transaction.TransactionRolledbackException:
CORBA TRANSACTION_ROLLEDBACK 0x0 No;
nested exception is:
org.omg.CORBA.TRANSACTION_ROLLEDBACK:
javax.transaction.TransactionRolledbackException: ;
nested exception is:
javax.ejb.TransactionRolledbackLocalException: ;
nested exception is:
com.ibm.ws.ejbpersistence.utilpm.PersistenceManagerException:
PMGR1013E: Exception occurred when verifying current backend id
INFORMIX_V94: javax.resource.spi.ResourceAllocationException:
DSRA0080E: An exception was received by the Data Store Adapter.
See original exception message:
No Transaction Isolation on non-logging dbs., error code:
DSA_ERROR, error code: DSA_ERROR vmcid: 0x0 minor code: 0
completed: No
- CREATE DATABASE SDOREP WITH LOG;
- CREATE DATABASE SDOREP WITH BUFFERED LOG:
- CREATE DATABASE SDOREP WITH LOG MODE ANSI;
未列示发布到 UDDI 注册中心的入站服务并且重新发布未成功
您有一个入站服务,已使用管理控制台将其发布至 UDDI 注册中心。但是,检查 UDDI 注册中心时,您发现未列示该服务。当您尝试使用管理控制台将该服务重新发布到 UDDI 时,操作失败。
已将该服务发布至 UDDI 注册中心,并且 WebSphere Application Server 管理控制台中显示的服务配置包含 UDDI 服务密钥。但是,后来又从 UDDI 中取消发布了该服务,并且未对 WebSphere Application Server 主配置应用相应的更新。如果使用管理控制台来删除已发布至 UDDI 注册中心的入站服务,然后从管理控制台注销而未保存所作的更改,就会引起这种情况。在这种情况下,虽然从 UDDI 注册中心中取消发布了该服务,但是未将其从 WebSphere Application Server 中删除(由于未确认删除请求,因此未应用该请求)。
- 在导航窗格中,单击 。将显示此入站服务的当前设置。
- 单击重新装入模板 WSDL,然后保存更改。
- 单击从 UDDI 中取消发布,然后保存更改。
- 单击发布至 UDDI,然后保存更改。
如果总线需要通过认证代理服务器传递消息以检索 WSDL 文档,那么必须通过命令行检索 WSDL
如果总线需要通过认证代理服务器传递消息以检索 WSDL 文档,那么必须使用命令行工具来检索 WSDL。
使用 JMS 来连接到远程总线要求进行额外的配置以允许 Web Service 客户机连接到该总线
如果要使用 JMS 来连接至远程总线,那么需要进行额外的配置以允许 Web Service 客户机连接至该总线。
在作为总线成员的服务器上运行的 Web Service 客户机应用程序可以找到该总线中的消息传递引擎。在应用程序服务器外部(例如在 WebSphere Application Server 环境外部)运行的 Web Service 客户机应用程序无法在目标总线中直接找到所要连接的合适消息传递引擎。同样,如果 Web Service 客户机应用程序在一个单元中的服务器上运行并需要连接至另一个单元中的目标总线,那么无法在目标总线中直接找到所要连接的合适消息传递引擎。
要使 Web Service 客户机应用程序能够访问远程总线中的目标消息传递引擎,请配置该客户机所使用的 JMS 连接工厂,以使该客户机能够连接至远程总线中的引导消息传递引擎。然后,引导消息传递引擎标识目标引擎,并将访问该目标引擎所需的信息传回该客户机。为了顺利完成引导过程,应该在客户机使用的连接工厂中配置一个或多个提供程序端点。有关更多信息,请参阅配置与非引导服务器的连接。
通过服务集成总线传递大型附件时,在 Java 虚拟机中发生内存不足错误
通过服务集成总线传递大型附件时,在 Java 虚拟机中发生内存不足错误。
如果发生此错误,请增大堆大小,如启用调整总线的 Web Service所述。
尝试使用管理控制台创建新的端点侦听器配置时发生错误
您尝试使用管理控制台创建新的端点侦听器配置时,在端点侦听器集合面板上单击新建将显示“请等待”图标,但目标面板不显示。
只有在旧版本的 Mozilla Web 浏览器中才会出现此问题。请将浏览器升级到 V1.4 或更高版本。变通方法是,再次单击新建,目标面板就会显示。
尝试通过管理控制台创建新的入站服务时出错
在尝试通过管理控制台创建新的入站服务时,目标下拉列表为空,向导将在执行第一步时停止并显示错误消息必须选择目标。
仅当正在创建的入站服务所在的服务集成总线未包含消息传递引擎时,才会发生此问题。请创建消息传递引擎,然后创建服务目标,最后重新运行该向导以创建新的入站服务配置。
处理带有附件的 SOAP 消息时发生问题
尝试发送 SOAP over HTTPS 消息时接收到 URLException 错误“格式不正确”
尝试发送 SOAP over HTTPS 消息时,接收到 URLException 错误“格式不正确”。
服务集成技术可以使用安全套接字层 (SSL) 来调用地址中包含 https:// 的外部 Web Service。有关更多信息,请参阅调用基于 HTTPS 的出站服务。
如果不同机器上的 JMS 资源具有相同的名称,那么将发生 JNDI 查找错误
如果在不同机器上的应用程序服务器上运行的 JMS 消息传递队列和队列连接工厂使用相同的名称,那么将发生 JNDI 查找错误。
不同机器上的应用程序服务器上运行的消息传递队列和队列连接工厂不得使用相同的名称,这是因为,服务集成技术始终先查找本地 JMS 目标,仅当找不到本地目标时,才会使用完整 JNDI 引用。如果将远程机器上主管的 Web Service 配置为出站服务,而且让远程机器上的以及出站服务主管机器上的消息传递队列和队列连接工厂使用相同的名称,那么服务集成技术将查找并使用本地队列,即使在 WSDL 服务定义中提供了完整的远程 JNDI 目标也是如此。
安装 sibwsauthbean.ear 文件时返回了错误
您要对 Web Service 操作进行密码保护,但是,在安装 sibwsauthbean.ear 文件时,WebSphere Application Server 管理控制台显示了一条错误消息,该消息详细描述了 Java 命名和目录接口 (JNDI) 问题。
对 Web Service 操作进行密码保护时,请确保在授权会话 Bean 的“EJB 引用”中输入所导入的 Web Service 企业 Bean 的正确 JNDI 名称。注意,此 Home 区分大小写。
无法根据 SOAP 故障消息确定具体问题
您接收到 SOAP 故障消息,但无法根据该故障消息确定具体问题。
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>1.1</faultstring>
此消息与 Apache SOAP 行为一致,而且不可由支持总线的 Web Service 更正。
使用 SOAP over JMS 端点侦听器传递大型消息时,发生侦听器端口超时错误
对于任何同步端点侦听器,都可能会发生超时错误。为了最大程度地降低超时错误的发生频率,应该对端点侦听器增大超时设置。如果问题仍存在,那么通过将应用程序服务器跟踪字符串设置为 com.ibm.ws.sib.webservices.*=all=disabled 对服务集成技术禁用跟踪和日志记录功能。