2013-07-31 3 views
0

У меня есть некоторые статические файлы (некоторые из них - HTML, некоторые - изображения, а некоторые - чистые файлы данных - например .csv или .xls и т. Д.), Которые я хочу разделить через ESB. Я могу сделать это, если я запустил отдельный HTTP-сервер, который получит запрос для них через ESB. Вместо этого мне нравится обрабатывать его в ESB. На основании URL-адреса входящего запроса (например, HTTP GET-запрос - http://myesb.com:8280/getstatus.html), мне нравится извлекать эти статические файлы из папок локального сервера.wso2 esb для загрузки/получения локального файла

Я пробовал метод VFS, и он выглядит как встроенный механизм «обновления», который я не хочу. Я хочу «Получить» эти данные только тогда, когда клиенты запрашивают его.

Короче говоря, я хотел бы иметь простое отображение сделано так:

http://myesb.com:8280/getstatus.html закачает содержимое /var/myapp/status/appstatus.html файла.

Update я сделал следующую последовательность - не знаю, как заставить его работать :(

<sequence xmlns="http://ws.apache.org/ns/synapse" name="app1status"> 
    <in> 
     <log level="custom"> 
     <property name="Reached app1status page - in" value="app1 Status"/> 
     <property name="transport.vfs.ContentType" value="text/html"/> 
     <property xmlns:ns="http://org.apache.synapse/xsd" name="TRPURL:" expression="get-property('From')"/> 
     </log> 
     <property name="transport.vfs.FileURI" value="vfs:file:///opt/platform/traffic/app1status1.html" scope="transport" type="STRING"/> 
     <property name="HTTP_METHOD" value="GET"/> 
     <property name="ClientApiNonBlocking" action="remove" scope="axis2"/> 
     <header name="To" action="remove"/> 
     <property name="RESPONSE" value="true" scope="default" type="STRING"/> 
    </in> 
    <out> 
     <log level="custom"> 
     <property name="::::::Out:::::Reached app1status" value=" From OUT"/> 
     <property name="messageType" value="text/html"/> 
     <property name="ContentType" value="text/html"/> 
     </log> 
     <send/> 
    </out> 
</sequence> 

Обратите внимание на следующее в <in> медиатора:

<property name="transport.vfs.FileURI" value="vfs:file:///opt/platform/traffic/app1status1.html" scope="transport" type="STRING"/> 

Мое намерение состоит чтобы получить содержимое файла appstatus1.html, извлеченного и отправленного обратно в ответ. Но я не могу получить содержимое, полученное и добавленное в «RESPONSE»

Дайте мне знать, как это сделать.

Спасибо за ваше время.

ответ

0

Определите RESTAPI и на основе GET/PUT вытащите или опубликуйте данные на своем сервере.

+0

Можете ли вы уточнить, как я могу указать локальный файл для отправки в api? Я пытаюсь сделать это: я хочу включить или отключить трафик для конкретного приложения, используя HTML-файл (обычный html-файл в локальной папке). Если ESB может найти и извлечь содержимое HTML-файла вызывающему абоненту (в этом случае внешнему балансировщику нагрузки), трафик будет продолжаться. Если ESB не найдет файл и не вернет HTTP 404, балансировщик нагрузки перестанет отправлять трафик для конкретного приложения. Я очень благодарен, если вы можете предоставить образец конфигурации для использования API для отправки статического файла. –

+0

На данный момент я использую RESTAPI и закончил размещение HTML-страницы на другом веб-сервере, и все сработало. Я хотел, чтобы сервер ESB сам обрабатывал HTML-запрос (стал базовым веб-сервером), но еще не понял, что еще один :(- –