2011-12-27 15 views
1

Я создаю базовый компонент службы, который принимает URL-адрес в качестве входного сигнала http-входящей конечной точки. Фрагмент кода из файла мул-конфигурации выглядит следующим образом:Не удается получить ответ HTTP от Mule

<service name="follow"> 
     <inbound> 
      <http:inbound-endpoint address="http://localhost:8765/follow/" synchronous="true"/> 
     </inbound> 
     <component class="org.mule.application.mytwitter.Follow" /> 
    </service> 

и функцию, которая вызывается из класса компонентов Java является:

public Object onCall(MuleEventContext eventContext) throws Exception { 
     MuleMessage msg = eventContext.getMessage(); 
     String str = msg.getStringProperty("http.request", null); 

     msg.setPayload(str); 
     msg.setStringProperty("http.status","200"); 
     msg.setStringProperty("Content-Type","text/html"); 
     System.out.println("Reached here:" + str); 
     return msg; 
    } 

Я хотел бы получить ответ HTTP (полезной нагрузки) по попав услугу через CURL как:

загнутого уголка -vv "HTTP: // локальный: 8765/следовать /"

, но я не получаю никакой полезной нагрузки:

> * About to connect() to localhost port 8765 (#0) 
* Trying ::1... connected 
* Connected to localhost (::1) port 8765 (#0) 
> GET /follow/ HTTP/1.1 
> User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 
> Host: localhost:8765 
> Accept: */* 
> 
    < HTTP/1.1 200 OK 
< Content-Type: text/plain 
< Date: Tue, 27 Dec 2011 03:14:00 IST 
< Server: Mule Core/2.1.2 
< Expires: Tue, 27 Dec 2011 03:14:00 IST 
< Content-Length: 0 
< Connection: close 
< 
* Closing connection #0 

я упускаю что-то? Функция в классе компонента вызывается, а вывод выводится на консоль.

+0

Что именно вы пытаетесь достичь? –

+0

Что вы получаете в консоли? Что после «Достигнуто здесь:»? –

ответ

0

Не обращайте на них внимания. Я понял что-то, и теперь он отлично работает. есть атрибут syncResponse для inbound-endpoint. Установка его на true заставляет его работать синхронно. Я думаю, что некоторые проблемы с Mule 2.1.2 или некоторые системные настройки.

1

Вы намеренно используете такую ​​старую версию мула? Существует гораздо более новая версия 3.2.1. И я предлагаю вам перейти к потоковому обмену сообщениями вместо сервисов.

Но для ответа на вашу проблему, если вы хотите получить полезную нагрузку для печати, тогда вы должны добавить строковый трансформатор к вашей конфигурации. Я не помню точно, как настроить это для элемента службы, но если вы используете поток, вы можете добавить блок ответа в конец потока.

<http:http-response-to-string-transformer />

Я надеюсь, что это помогает.