Question

Je souhaite installer Jetty sur une application Mule opérationnelle pour répondre aux requêtes http. La configuration suivante:

<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>

... fonctionne lorsque je lance l'application, et pointez le navigateur de votre choix sur http: // localhost: 8080 . - tout ce qui est affiché est "Reçu", selon le test: composant.

Ce que je veux faire, c'est mettre à jour cela afin qu'au lieu de voir "Reçu", je veux aller à l'endroit où j'ai défini un fichier index.html. Mon hypothèse est que je dois changer le test: composant out pour un noeud final sortant - est-ce correct? Où devrais-je spécifier le chemin (relatif ou absolu)?

Était-ce utile?

La solution

J'ai dû ajouter un jeton: instance de connecteur:

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

Voici le contenu du fichier jettyConfig.xml car exemple simple contient des erreurs:

<?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>

Autres conseils

Cela n'a pas fonctionné pour moi.

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

Je pense que ce qui se passe, c’est qu’une instance est en cours de création sur le port défini dans jettyConfig, puis une autre via Mule. Changer le port dans jettyConfig donne deux instances identiques sur deux ports différents.

La solution la plus simple consiste à supprimer l'appel addConnector de jettyConfig.xml et à laisser Mule attribuer le port.

Il n'est également pas nécessaire de spécifier l'hôte et le port sur le noeud final. Cela suffit:

<jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top