Soap 区分wso2中的操作

Soap 区分wso2中的操作,soap,wso2,Soap,Wso2,我来自OpenESB Glassfish,我是wso2的新手。我必须调解一个服务,使其具有两个操作“Block”和“Consult”。 区分这些操作的唯一方法是通过开关中介从soap:body计算第一个节点,但默认情况下总是这样,它不起作用。 我无法通过get-property'Action'进行区分,因为它不是http头 我分析soap消息的代码如下所示: `<log level="custom"> <property xmlns:soap="htt

我来自OpenESB Glassfish,我是wso2的新手。我必须调解一个服务,使其具有两个操作“Block”和“Consult”。 区分这些操作的唯一方法是通过开关中介从soap:body计算第一个节点,但默认情况下总是这样,它不起作用。 我无法通过get-property'Action'进行区分,因为它不是http头

我分析soap消息的代码如下所示:

     `<log level="custom">
        <property xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
                  name="OP"
                  expression="$body/*[1]"/>
     </log>
     <switch xmlns:soap="http://www.w3.org/2003/05/soap-envelope" source="$body/*[1]">
        <case regex=".*ConsultRequest.*">
           <log level="custom">
              <property name="OPERATION" value="CONSULT"/>
           </log>
        </case>
        <case regex=".*BlockRequest.*">
           <log level="custom">
              <property name="OPERATION" value="BLOCK"/>
           </log>
        </case>
        <default>
           <log level="custom">
              <property name="OPERATION" value="DEFAULT"/>
           </log>
        </default>
     </switch>`
服务器控制台中的结果是:

[2015-04-15 11:15:04611]INFO-LogMediator OP=25 [2015-04-15 11:15:04611]信息-日志中介操作=默认值

有没有人知道某个属性调用了什么操作


有人能帮我吗:

$body/*[1]不是节点名,而是内容值或子xml树。如果希望在没有命名空间信息的情况下获取其名称,可以使用名为local name的xpath函数:

本地名称$body/*[1]