1

我有一个类,我将其作为 java 组件进行连接,如下所示:

    <component doc:name="eduPubService">
      <method-entry-point-resolver>
          <include-entry-point method="checkAndReserve" />
          </method-entry-point-resolver>
          <spring-object bean="edusPubService"/>
    </component>

我正在尝试使用这样的注释访问 MuleMessage 和 Payload:

public class PublicationServiceImpl implements PublicationService {
    public Object checkAndReserve(@Mule("message") MuleMessage message, @Payload String payload) throws Exception {  ..... }

我传入的有效负载是一个字符串。我认为我不太了解这些注释是如何工作的。我假设他们从 EventContext 之类的东西中获取了 MuleMessage 和 Payload,但我得到了 EntryPointNotFoundExceptions,因为它正在寻找一个只接受一个字符串作为参数的方法“checkAndReserve”。我将如何定义使用上述注释并使用方法名称调用的类和方法?我不喜欢使用 Callable 的想法,因为我必须为每个自定义组件/变压器创建一个单独的类。如果我只依赖方法签名来解决有效负载,因为错误似乎表明是必要的,我仍然不知道如何获取会话变量、Mule 消息等内容。

4

1 回答 1

1

如果要对流中的 Message 进行更改,例如设置会话变量,建议创建一个从 AbstractMessageTransformer 扩展的自定义 Transformer 并实现方法 transformMessage。

这是一个自定义转换器的示例:

package com.test;    

import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.api.transport.PropertyScope;
import org.mule.transformer.AbstractMessageTransformer;

public class MyTransformer extends AbstractMessageTransformer{


    @Override
    public Object transformMessage(MuleMessage message, String outputEncoding)
            throws TransformerException {
        //Add Session Variables
        message.setProperty("variable1", "value1", PropertyScope.SESSION);
        message.setProperty("variable2", 100, PropertyScope.SESSION);
        //Get Payload
        Object payload = message.getPayload();
        return message;
    }


}

这是您可以在流程中使用它的方式:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting"
      xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
      xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
      xmlns:file="http://www.mulesoft.org/schema/mule/file"
      xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp"
      xmlns:db="http://www.mulesoft.org/schema/mule/db"
      xmlns:mule-xml="http://www.mulesoft.org/schema/mule/xml"
      xmlns:jersey="http://www.mulesoft.org/schema/mule/jersey"
      xmlns:json="http://www.mulesoft.org/schema/mule/json"
      xmlns:ws="http://www.mulesoft.org/schema/mule/ws"
      xmlns:smtps="http://www.mulesoft.org/schema/mule/smtps"
      xmlns:email="http://www.mulesoft.org/schema/mule/email"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:batch="http://www.mulesoft.org/schema/mule/batch"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
        http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
        http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
        http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
        http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
        http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
        http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd
        http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
        http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
        http://www.mulesoft.org/schema/mule/jersey http://www.mulesoft.org/schema/mule/jersey/current/mule-jersey.xsd
        http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
        http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd
        http://www.mulesoft.org/schema/mule/smtps http://www.mulesoft.org/schema/mule/smtps/current/mule-smtps.xsd
       http://www.mulesoft.org/schema/mule/email http://www.mulesoft.org/schema/mule/email/current/mule-email.xsd
       http://www.mulesoft.org/schema/mule/batch http://www.mulesoft.org/schema/mule/batch/current/mule-batch.xsd
    ">



    <custom-transformer name="myTransformer" class="com.test.MyTransformer" />


    <http:listener-config name="HTTP_Refactoring_Listener_Configuration" host="0.0.0.0" port="8181" >
        <http:worker-threading-profile maxThreadsActive="64" />
     </http:listener-config>




     <flow name="JobExecutorProcessor" doc:name="JobExecutorProcessor">
        <vm:inbound-endpoint exchange-pattern="request-response" path="vm.in.test" doc:name="VM"/>

        <logger message="Calling myTransformer" level="INFO" doc:name="Logger"/>
        <transformer ref="myTransformer" />     

     </flow>


</mule>
于 2015-10-27T17:43:02.413 回答