2016-04-29 14 views
1

In einem Mule ESB-Projekt versuche ich, andere Dateien als eine HTML-Datei mit dem statischen Ressourcenhandler in Kombination mit dem http: Listener zu dienen. Ich habe eine einfache HTML-Datei, die ein Formular enthält und auf eine CSS-Datei im selben Verzeichnis verweist. Wenn ich zu http://localhost:8000 gehe, wird die Datei index.html geliefert. Die .css-Datei wird jedoch nicht bereitgestellt (404), obwohl sie sich im selben Verzeichnis wie die HTML-Datei befindet. Andere HTML-Dateien, die sich im selben Verzeichnis befinden, werden ebenfalls nicht bedient.Mule ESB Serving statische Dateien wie CSS

Beachten Sie, dass dies mit dem http-Inbound-Endpunkt funktioniert.

<http:inbound-endpoint exchange-pattern="request-response" host="${server.address}" port="${server.port}" doc:name="HTTP"/> 

Ist der neue httpListener-Ansatz nicht zur Prime Time bereit?

ist hier der entsprechende Code:

Formular HTML (/index.html):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<link rel="stylesheet" type="text/css" href="http://localhost:8081/uploadform.css"> 
</head> 
<body> 
    <form action="http://localhost:8081/submitform" enctype="multipart/form-data" method="post"> 
    <p> 
    Type a file title:<br> 
    <input type="text" name="title" size="30"> 
    </p> 
    <p> 
    Please specify a file to upload:<br> 
    <input type="file" name="datafile" size="40"> 
    </p> 
    <div> 
    <input type="submit" value="Send"> 
    </div> 
    </form> 
</body> 

Relevante MULE Code:

<http:listener-config name="HTTP_Listener_Configuration" host="${server.address}" port="${server.port}" doc:name="HTTP Listener Configuration"/> 
<flow name="HTTP_FORM" initialState="started"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" allowedMethods="GET" doc:name="HTTP"/> 
    <http:static-resource-handler resourceBase="${app.home}/web" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/> 
</flow> 

Hier konnte der Fehler sind Meldungen, die erscheinen:

Kein Zuhörer für Anfrage gefunden: (GET) /uploadform.css verfügbar Zuhörer sind: [([Beitrag])/SubmitForm/([get]) /]

Antwort

2

scheint, als ob die Art und Weise, dies zu tun ist durch die Verwendung von Wildcards. Vom current documentation:

können Sie auch * als Platzhalter Pfad verwenden, für alle eingehenden Anfragen auf einen Pfad innerhalb des angegebenen Basispfad getan zu hören. Sie können auch einen Teilpfad angeben, der auf endet, z. B. mypath/, und auf einen beliebigen Pfad verweisen, der wie definiert beginnt, aber auch mit anderen Elementen erweitert werden kann.

3

Sie müssen Platzhalter verwenden in Ihrem http:listener wie path="/*"

Beispiel Mule-Code:

<http:listener-config name="HTTP_Listener_Configuration" post="${server.address}" port="${server.port}" doc:name="HTTP Listener Configuration"/> 
<flow name="HTTP_FORM" initialState="started"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/*" allowedMethods="GET" doc:name="HTTP"/> 
    <http:static-resource-handler resourceBase="${app.home}/web" defaultFile="index.html" doc:name="HTTP Static Resource Handler"/> 
</flow> 
+0

es funktioniert ist, danke. Bitte beachten Sie, dass diese eher extern und nicht zusammenhängend fließen, so dass das ganze HTML funktioniert (zB das mit parseTemplate). Es ist wild bewacht (/ *) –

Verwandte Themen