Мул Рестлет приложение не работает - PullRequest
1 голос
/ 08 декабря 2011

Это интерфейс RESTful, встроенный в Mule, который принимает имя пользователя и выводит "hello, $ name"

Следующее является частью содержимого в mule-config.xml

       <model name="greetingModel">
          <service name="greetingService">
              <inbound>
                  <inbound-endpoint address="http://localhost:9004"/>
              </inbound>
              <outbound>
                  <filtering-router>
                      <outbound-endpoint address="vm://greeting"/>
                      <restlet:uri-template-filter pattern="/hello/{set-payload.name}" verbs="GET"/>
                  </filtering-router>
              </outbound>
          </service>
          <service name="greeting">
              <inbound>
                  <inbound-endpoint address="vm://greeting" exchange-pattern="request-response"></inbound-endpoint>
              </inbound>
              <component class="com.ggd543.mulerestletdemo.GreetingComponent"></component>
          </service>
    </model>

и класс компонента

package com.ggd543.mulerestletdemo

import org.mule.api.lifecycle.Callable
import org.mule.api.MuleEventContext

class GreetingComponent  extends Callable {

  def onCall(eventContext: MuleEventContext) = {
      val name = eventContext.getMessage.getPayload.asInstanceOf[String]
      sayHello(name)
  }

  def sayHello(name: String) = {
    val msg = "hello, "+name
    println(msg)
    msg
  }
}

После успешного развертывания приложения я попытался зайти в браузер http://localhost:9004/hello/archer, но ничего не произошло.

Что-то не так в mule-config.xml?

PS: Моя версия mule - 3.1.2, и я использую mule-transport-restlet-1.1.3.jar

1 Ответ

1 голос
/ 08 декабря 2011

Проблема связана с несовместимыми схемами обмена на конечной точке виртуальной машины.Попробуйте:

   <model name="greetingModel">
      <service name="greetingService">
          <inbound>
              <inbound-endpoint address="http://localhost:9004"/>
          </inbound>
          <outbound>
              <filtering-router>
                  <outbound-endpoint address="vm://greeting" exchange-pattern="request-response"/>
                  <restlet:uri-template-filter pattern="/hello/{set-payload.name}" verbs="GET"/>
              </filtering-router>
          </outbound>
      </service>
      <service name="greeting">
          <inbound>
              <inbound-endpoint address="vm://greeting" exchange-pattern="request-response"/>
          </inbound>
          <component class="com.ggd543.mulerestletdemo.GreetingComponent" />
      </service>
</model>
...