2009-09-15 1 views
3

У меня есть рабочее приложение Mule, которое я хочу настроить Jetty для ответа на HTTP-запросы. Следующий конфиг:Mule/Jetty Setup

<jetty:endpoint address="http://localhost:8080" 
       name="jettyEndpoint" 
       host="localhost" 
       port="8080" path="/" 
       synchronous="true" /> 

<service name="jettyUMO"> 
    <inbound> 
    <jetty:inbound-endpoint ref="jettyEndpoint" /> 
    </inbound> 
    <test:component appendString="Received" /> 
</service> 

... работает, когда я запустить приложение, и точка браузер выбора для http://localhost:8080 - все, что получает отображаемая «Received», в тесте: компонент.

Что я хочу сделать, это обновить это, чтобы вместо того, чтобы видеть «Received», я хочу перейти к тому, где я определил файл index.html. Мое предположение заключается в том, что мне нужно изменить тест: компонент для исходящей конечной точки - это правильно? Где указать путь (относительный или абсолютный)?

ответ

1

мне пришлось добавить молы: экземпляр соединителя:

<jetty:connector name="httpConnector" 
       configFile="conf/jettyConfig.xml" 
       useContinuations="true" /> 

Вот содержание jettyConfig.xml потому что simple example есть ошибки:

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 

<Configure id="Server" class="org.mortbay.jetty.Server"> 
    <Call name="addConnector"> 
    <Arg> 
     <New class="org.mortbay.jetty.nio.SelectChannelConnector"> 
     <Set name="port">8080</Set> 
     </New> 
    </Arg> 
    </Call> 

    <Set name="handler"> 
    <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection"> 
     <Set name="handlers"> 
     <Array type="org.mortbay.jetty.Handler"> 
      <Item> 
      <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/> 
      </Item> 
      <Item> 
      <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/> 
      </Item> 
     </Array> 
     </Set> 
    </New> 
    </Set> 

    <Call name="addLifeCycle"> 
    <Arg> 
     <New class="org.mortbay.jetty.deployer.WebAppDeployer"> 
     <Set name="contexts"><Ref id="Contexts"/></Set> 
     <Set name="webAppDir">path/webapps</Set> 
     </New> 
    </Arg> 
    </Call> 
</Configure> 
1

Это не работает для меня.

> [04-22 17:25:22] WARN log [main]: 
> failed [email protected]:8080 
> java.net.BindException: Address already in use 
>   at sun.nio.ch.Net.bind(Native Method) 

Я думаю, что происходит в том, что один экземпляр создается на порт, заданные в jettyConfig и потом еще через Mule. Изменение порта в jettyConfig дает два идентичных примера поведения на двух разных портах.

Самое простое решение - удалить вызов AddConnector из файла jettyConfig.xml и разрешить Mule назначать порт.

Также не нужно указывать хост и порт на конечной точке. Этого достаточно:

<jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />