Frage

Ich habe eine funktionierende Maultieranwendung, auf die ich Stegy einrichten möchte, um auf HTTP -Anfragen zu antworten. Die folgende Konfiguration:

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

... funktioniert, wenn ich die Anwendung starte und den Point -Browser der Wahl ist http: // localhost: 8080 - Alles, was angezeigt wird, wird gemäß Test: Komponente "empfangen".

Was ich tun möchte, ist dies zu aktualisieren, damit ich anstatt "empfangen" zu sehen, ich möchte zu dem Ort, an dem ich eine Index.html -Datei definiert habe. Meine Annahme ist, dass ich den Test ändern muss: Komponente für einen ausgehenden Endpunkt aus - ist das richtig? Wo würde ich den Pfad angeben (relativ oder absolut)?

War es hilfreich?

Lösung

Ich musste einen Steg hinzufügen: Connector -Instanz:

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

Hier ist der Inhalt der Jettyconfig.xml, weil die Einfaches Beispiel hat Fehler:

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

Andere Tipps

Das hat bei mir nicht funktioniert.

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

Ich denke, was passiert, ist, dass eine Instanz am Port, das in JettyConfig und dann durch ein anderes durch Mule definiert ist, erstellt wird. Das Ändern des Ports in JettyConfig ergibt zwei identisch verhaltene Instanzen an zwei verschiedenen Ports.

Die einfachste Lösung besteht darin, den AddConnector -Aufruf von jettyconfig.xml zu entfernen und Maultier den Port zuweisen zu lassen.

Es ist auch nicht erforderlich, Host und Port auf dem Endpunkt anzugeben. Dies reicht aus:

<jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top