Не удается распечатать элемент ‹wsse:Password› в сообщении esb

Я пытаюсь создать XML-запрос SOAP, который включает несколько пространств имен, используя действие smooks и соблазнение freemarker. Вот мой фрагмент кода в jboss-esb.xml, а smooks-upgraded-right-now-query.xml — это файл шаблона, в котором я создаю запрос клиента SOAP к веб-службе.

Jboss-esb.xml

<action class="org.jboss.soa.esb.smooks.SmooksAction" name="create-right-now-details-query">
<property name="smooksConfig" value="/smooks/smooks-upgraded-right-now-query.xml"/>
<property name="resultType" value="STRING" />
</action>
<action class="org.jboss.soa.esb.actions.SystemPrintln" name="printMessageRequest">
<property name="message" value="GetInfoFromRightNow before request"/>
<property name="printfull" value="true"/>
</action>

Ниже приведен файл smooks-upgrade-right-now-query.xml.

smooks-upgrade-right-now-query.xml

<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
    xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
    <params>
        <param name="inputType">input.java</param>
        <param name="stream.filter.type">SAX</param>
        <param name="input.java" type="input.type.actived">com.ws.custom.Update</param>
    </params>

<ftl:freemarker applyOnElement="#document"> 

<ftl:template><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v11="urn:basews.customws.com/v1_2" xmlns:v12="urn:objectws.customws.com/v1_2">
    <soapenv:Header>
      <ns7:ClientInfoHeader soapenv:mustUnderstand="0" xmlns:ns7="urn:messages.ws.customws.com/v1_2">
        <ns7:AppID>Appid01</ns7:AppID>
      </ns7:ClientInfoHeader>
      <wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <wsse:UsernameToken>
            <wsse:Username>user</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
</soapenv:Envelope>]]></ftl:template>

    <param name="rootElementName">Envelope</param>
    <param name="messageType">XML</param>

</ftl:freemarker>


<resource-config selector="#document">
<resource>org.milyn.delivery.DomModelCreator</resource>
</resource-config>

</smooks-resource-list>

Как вы можете видеть выше, я просто создаю заголовок SOAP, который включает в себя обычный текст. Я не читаю никаких входных данных из предыдущих сообщений в конвейере действий.

Я могу распечатать этот заголовок SOAP с помощью действия SystemPrintln тогда и только тогда, когда элемент <wsse:Password> удален из приведенного выше шаблона. Так случилось, даже если я использую шаблоны xslt. Я не понимаю, неправильно ли интерпретируется этот элемент пароля синтаксическим анализатором smooks.

Единственное полезное сообщение, которое я вижу в журнале, это [org.milyn.delivery.AbstractParser] (pool-96-thread-1:) XMLReader property 'http://xml.org/sax/properties/lexical-handler' not recognized by XMLReader 'org.milyn.delivery.java.XStreamXMLReader'.

Любая подсказка приветствуется.


person sanBV    schedule 19.12.2013    source источник


Ответы (1)


Похоже, что log4j можно настроить так, чтобы он пропускал сообщения на основе выражений внутри сообщения, таких как «Пароль», в этом случае.

Это единственная причина, по которой я мог придумать, почему мое сообщение отбрасывается регистратором.

Пожалуйста, прочитайте следующую ссылку для получения дополнительной информации.

http://pic.dhe.ibm.com/infocenter/sfsf/v9r1/index.jsp?topic=%2Fcom.ibm.help.custom.basics.doc%2FCstm_mask_info_using_log4j.html

person sanBV    schedule 20.12.2013