Java 在mule3中,如何设置自定义表达式以供选择?
我是Mule的新手,我想验证URI中的timestamp和nonce参数,以防止重播攻击。我使用choice when router,当时间戳和nonce有效时(验证过程复杂),将请求转发到后端rest服务,否则返回错误代码和消息。我发现很多MEL用法可供选择,但我可以使用java定义自定义表达式吗?有一个例子吗? URI示例:Java 在mule3中,如何设置自定义表达式以供选择?,java,mule,Java,Mule,我是Mule的新手,我想验证URI中的timestamp和nonce参数,以防止重播攻击。我使用choice when router,当时间戳和nonce有效时(验证过程复杂),将请求转发到后端rest服务,否则返回错误代码和消息。我发现很多MEL用法可供选择,但我可以使用java定义自定义表达式吗?有一个例子吗? URI示例: http://muledemo.org/ci2/ni/del?id=0xe413×tamp=1376022133&nonce=a03ed9c
http://muledemo.org/ci2/ni/del?id=0xe413×tamp=1376022133&nonce=a03ed9c
代码片段:
<choice doc:name="Choice">
<when expression="???how to call a java validator???">
</when>
<otherwise>
<processor-chain doc:name="Processor Chain">
<echo-component doc:name="Echo" />
<http:outbound-endpoint exchange-pattern="request-response" method="POST"
address="http://localhost:8081#[message.inboundProperties['http.request']]" doc:name="HTTP" />
</processor-chain>
</otherwise>
</choice>
您只需使用完全限定路径
#[com.mulesoft.foo(payload, someFooVar)]
或者,您可以在配置中为应用程序全局定义它,并在MEL表达式中使用“foo”函数
<configuration doc:name="Config">
<expression-language autoResolveVariables="false">
<global-functions>
def foo(fooVar){
return com.mulesoft.foo(payload, fooVar);
}
</global-functions>
</expression-language>
</configuration>
def foo(fooVar){
返回com.mulesoft.foo(有效载荷,fooVar);
}
您只需使用完全限定路径
#[com.mulesoft.foo(payload, someFooVar)]
或者,您可以在配置中为应用程序全局定义它,并在MEL表达式中使用“foo”函数
<configuration doc:name="Config">
<expression-language autoResolveVariables="false">
<global-functions>
def foo(fooVar){
return com.mulesoft.foo(payload, fooVar);
}
</global-functions>
</expression-language>
</configuration>
def foo(fooVar){
返回com.mulesoft.foo(有效载荷,fooVar);
}
正确的MEL语法:
<when expression="#[app.registry.replayAttackCheck.validate(payload)]">
正确的MEL语法:
<when expression="#[app.registry.replayAttackCheck.validate(payload)]">
谢谢,但是com.mulesoft.foo是什么?查看我的编辑,我仍然得到错误。foo是您想要的任何内容;)你能不用豆子再试一次吗?使用MELI Use中的完整路径,现在一切正常,这里是一个SpringBean。MEL不能表达复杂的逻辑。无论如何,谢谢!不正确:MEL可以表达复杂的逻辑。它是基于MVEL构建的,MVEL非常强大:谢谢,但是com.mulesoft.foo是什么?查看我的编辑,我仍然得到错误。foo是您想要的任何内容;)你能不用豆子再试一次吗?使用MELI Use中的完整路径,现在一切正常,这里是一个SpringBean。MEL不能表达复杂的逻辑。无论如何,谢谢!不正确:MEL可以表达复杂的逻辑。它建立在MVEL之上,非常强大:是的!很好用,很酷,谢谢!app.registry是指在春季注册的bean吗?是的,加上Mule添加的额外bean。是的!很好用,很酷,谢谢!app.registry是指在春季注册的bean吗?是的,加上Mule添加的额外bean。