5

我们有一个在 Tomcat v7 服务器内的 JVM(IBM jdk 而不是 Oracle)上运行的 java 应用程序,具有以下属性

JVM信息

  • Java版本:1.6.0
  • Java 供应商:IBM Corporation
  • Java 规范版本:1.6
  • Java 规范供应商:Sun Microsystems Inc.
  • Java 规范名称:Java 平台 API 规范
  • JVM版本:2.4
  • JVM 供应商:IBM Corporation
  • JVM 名称:IBM J9 VM
  • JVM 规范版本:1.0
  • JVM 规范供应商:Sun Microsystems Inc.
  • JVM 规范名称:Java 虚拟机规范
  • JVM管理规范版本:1.0
  • Java 编译器:j9jit24
  • Java 类格式版本:50.0

相关系统属性

  • -Dsun.nio.ch.disableSystemWideOverlappingFileLockCheck=true
  • -Doracle.net.ssl_version=3
  • -Djavax.xml.stream.XMLInputFactory=com.ibm.xml.xlxp.api.stax.XMLInputFactoryImpl
  • -Djavax.xml.stream.XMLOutputFactory=com.ibm.xml.xlxp.api.stax.XMLOutputFactoryImpl
  • -Djavax.xml.stream.XMLEventFactory=com.ibm.xml.xlxp.api.stax.XMLEventFactoryImpl
  • -Djava.awt.headless=true
  • -Dfile.encoding=UTF-8
  • -Dcom.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace=false
  • -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true

使用 Metro (with WSIT) version 2.3 调用需要 WS-Security 和 Ws-Reliability 规范的 .Net SOAP 服务并收到此错误

有关服务的 wsdl 的信息

wsdl 定义了 RM 断言。

我想知道这个序列号是否可能是服务器已经认为已经完成的旧消息,但客户端仍然认为它需要重新提交并确认。此时它挂在这个问题上试图完成消息并且没有其他消息可以完成

异常跟踪

原因:com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException:WSRM1124:在 com.sun.xml 中没有使用 id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d] 注册序列。 ws.rx.rm.runtime.sequence.invm.InVmSequenceManager.getSequence(InVmSequenceManager.java:307) 在 com.sun.xml.ws.rx.rm.runtime.sequence.invm.InVmSequenceManager.getOutboundSequence(InVmSequenceManager.java:339 )在 com.sun.xml.ws.rx.rm.runtime.SourceMessageHandler.registerMessage(SourceMessageHandler.java:87) 在 com.sun.xml.ws.rx.rm.runtime.ClientTube.processRequest(ClientTube.java:191 ) 在 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136) 在 com。 sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877) 在 com.sun.xml.ws.client.Stub.process(Stub.java:464) 在 com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:174) 在 com.sun.xml.ws。 client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) 在 com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:91) 在 com.sun.xml.ws.client.sei。 SEIStub.invoke(SEIStub.java:154) 在 com.sun.proxy.$Proxy85.get(Unknown Source)

地铁日志

2014 年 7 月 19 日 15:22:26.581 (ajp-bio-8009-exec-4:28) FINER [com.sun.xml.ws.api.pipe.Fiber___doRun] engine-Metro/2.3 (tags/2.3-7528 ; 2013-04-29T19:34:10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown: SomeURL fiber-18 com.sun.xml.ws.handler.ClientLogicalHandlerTube@1dbb1dbb.processException 的存根(com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException: WSRM1124: No sequence registered with id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d]) Jul-19-2014 15:22 :26.581 (ajp-bio-8009-exec-4:28) FINER [com.sun.xml.ws.api.pipe.Fiber___doRun] engine-Metro/2.3 (tags/2.3-7528; 2013-04-29T19:34 :10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown: SomeURl fiber-18 com.sun.xml.ws.handler.ClientLogicalHandlerTube@1dbb1dbb 的存根与 com.sun.xml.ws 返回。 api.pipe.NextAction@78467846 [kind=THROW,next=null,packet=null,throwable=com.sun.xml.ws.rx.rm.runtime.sequence.UnknownSequenceException: WSRM1124: 没有使用 id [urn:uuid:7b7df40c-0d0c-49ee-aabd-cd37ec8ce79d] 注册的序列]

我的问题

  • 造成这种情况的根本原因是什么,Metro 想要做什么?
  • 我用谷歌搜索了这个问题,我得到的只是我需要设置一些我已经做过的系统属性(见上文)。有没有人看到这个来指导我解决问题?在跟踪InVmSequenceManager 时,似乎 UUID 不在内存映射中,因此逻辑抛出了上面的异常。也许一种解决方案是配置我自己的序列管理器,但我不知道该怎么做。

提前致谢,

4

1 回答 1

2

我没有这方面的经验,但我会冒险尝试一个可能会导致你走错方向的答案(所以请自告奋勇)。我的希望是,如果我离基地很远,至少我会鼓励其他人进来帮助你解决问题。(有时,在互联网上获得正确答案的最佳方法是发布错误答案,让更有见识的书呆子有所攻击。)也就是说……</p>

我收到了您收到的错误消息的一部分并转到了 Google:

"No sequence registered with id" metro

我收到的第二次点击是Glassfish 错误跟踪器中一个非常老的问题的链接。该问题没有跟踪实际的错误,因此该问题的内容不是很丰富。但是,我确实注意到该问题已被关闭为“无效”,并且出于特定原因。

Invalid Issue. Client wsdl did not have RMAssertion on it.

那么这对我有什么建议呢?它向我表明,当您缺少指向包含上述 RMAssertion 的有效 WS-Policy XML 文件的 @Policy 注释时,这种拜占庭式安全 SOAP 内容可能会以极其不具信息性的方式失败。

所以……我的问题是:您是否在此服务上设置了 RMAssertion?

编辑:事实证明他们确实定义了 RMAssertion,但我将把这个“答案”留给后代。

于 2014-07-20T22:52:10.353 回答