首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hermes2 -“无法从存储库重构消息”错误

Hermes2 -“无法从存储库重构消息”错误
EN

Stack Overflow用户
提问于 2015-01-12 08:57:23
回答 1查看 357关注 0票数 1

我的目的是通过另一个Hermes2向MSH (Hermes2 http://www.cecid.hku.hk/hermes.php)发送ebxml消息。

我正在发送相当简单的消息(没有附件),这是一个消息:

代码语言:javascript
复制
POST /corvus/httpd/ebms/sender HTTP/1.0
User-Agent: PEAR-SOAP 0.12.0-beta
Host: 10.0.4.9
Content-Type: text/xml; charset=UTF-8
Content-Length: 698
SOAPAction: "PaymentAddRequest"
Connection: close

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<cpaId>ZSK_KOLEK</cpaId>
<service>http://www.squiz.pl/zsk/ebxml</service>
<action>PaymentAddRequest</action>
<convId>convId</convId>
<fromPartyId>KOLEK</fromPartyId>
<fromPartyType>urn:oasis:names:tc:ebxml-cppa:partyid-type:duns</fromPartyType>
<toPartyId>ZSK-C</toPartyId>
<toPartyType>urn:oasis:names:tc:ebxml-cppa:partyid-type:duns</toPartyType>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

作为回应,我得出以下结论:

代码语言:javascript
复制
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<message_id xmlns="http://service.ebms.edi.cecid.hku.hk/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="xsd:string">20150112-092001-65410@127.0.1.1</message_id>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

消息被注册,但在日志/ebms.log中,我得到以下错误

代码语言:javascript
复制
[Thread-1855 ] <ERROR> <cecid.ebms.spa> <Error in outbox task>
hk.hku.cecid.ebms.spa.task.MessageValidationException: Cannot reconstruct the message 20150112-092435-20713@127.0.1.1 from repository
    by java.lang.RuntimeException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: 
    by com.sun.xml.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source: 
    by javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.

还可以查看DB中的存储库表,可以看到插入了一行,content列包含十六进制形式的消息(\x3c3f786d6c2076657273696f6e3d.),一旦转换为ASCII,它说:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://www.oasis-open.org/committees/ebxml-msg/schema/envelope.xsd">
    <SOAP-ENV:Header xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">
        <eb:MessageHeader SOAP-ENV:mustUnderstand="1" eb:version="2.0" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">
            <eb:From>
                <eb:PartyId eb:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">KOLEK</eb:PartyId>
            </eb:From>
            <eb:To>
                <eb:PartyId eb:type="urn:oasis:names:tc:ebxml-cppa:partyid-type:duns">ZSK-C</eb:PartyId>
            </eb:To>
            <eb:CPAId>ZSK_KOLEK</eb:CPAId>
            <eb:ConversationId>convId</eb:ConversationId>
            <eb:Service>http://www.squiz.pl/zsk/ebxml</eb:Service>
            <eb:Action>PaymentAddRequest</eb:Action>
            <eb:MessageData>
                <eb:MessageId>20150112-092435-20713@127.0.1.1</eb:MessageId>
                <eb:Timestamp>2015-01-12T09:24:35.207+01:00</eb:Timestamp>
            </eb:MessageData>
            <eb:DuplicateElimination/>
        </eb:MessageHeader>
        <eb:SyncReply SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next" SOAP-ENV:mustUnderstand="1" eb:version="2.0" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"/>
        <eb:AckRequested SOAP-ENV:actor="urn:oasis:names:tc:ebxml-msg:actor:toPartyMSH" SOAP-ENV:mustUnderstand="1" eb:signed="false" eb:version="2.0" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"/>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body xsi:schemaLocation="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd"/>
</SOAP-ENV:Envelope>

但是它没有被传递到端点,似乎Hermes2甚至没有尝试将它发送到第二个Hermes2。这两个实例都配置了适当的合作伙伴关系。

有人能给我指明正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 13:28:03

好的,我花了很长时间才找到这个问题,然后找到了一个解决方案,希望我能节省一些时间。

关于Hermes 2安装的文档显示,它需要PostgreSQL 8.0或更高版本。这是个谎言!删除Postgres 9.3并用Postgres 8.4重新安装Hermes解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27898272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档