0

我想@Function在 Mule 中使用注释。我只找到了 关于它的这个页面

但我不能得到好的结果。

我创建了一个新项目,添加了一个 Java 组件,创建了一个新类并复制了这段代码

public class MyComponent {
    public Object process(@XPath("/Envelope") Document doc
                                        @Function("uuid") String id) {
        // do stuff
    }
}

但我有很多错误。我想我必须配置其他东西,但我不知道是什么,也不知道如何使用@Function.

4

1 回答 1

1

您需要在配置中手动声明注释解析器才能处理注释。

考虑这个 POJO:

package com.acme;

import org.mule.api.annotations.expression.XPath;
import org.mule.api.annotations.expressions.Function;
import org.w3c.dom.Document;

public class AnnotatedPojo
{
    public Object process(@XPath("/Envelope") final Document doc, @Function("uuid") final String id)
    {
        return "Envelope text: " + doc.getDocumentElement().getTextContent() + " - ID: " + id;
    }
}

你可以将它与这个 Mule 配置一起使用:

<spring:bean class="org.mule.config.endpoint.RegistryBackedAnnotationsParserFactory" />

<flow name="testAnnotatedPojo">
    <http:inbound-endpoint address="http://localhost:8080/pojo"
        exchange-pattern="request-response" />

    <component class="com.acme.AnnotatedPojo" />
</flow>

示例调用:

$ curl -H "Content-Type: application/xml" http://localhost:8080/pojo -d'<Envelope>foo</Envelope>'
Envelope text: foo - ID: 9133fc7d-a07f-11e2-b560-4d5f883736c4
于 2013-04-08T19:10:08.807 回答