我想要通过ESB共享一些静态文件(一些是HTML,一些是图像,一些是纯数据文件,如.csv或.xls等)。如果我运行一个单独的HTTP服务器来通过ESB接收这些请求,我可以实现这一点。相反,我喜欢在ESB中处理它。根据传入的请求URL(比如HTTP GET请求 - http://myesb.com:8280/getstatus.html),我喜欢从本地服务器的文件夹中提取这些静态文件。
我尝试了VFS方法,它看起来像内置了“刷新”机制,我不想要。我想只在客户请求时才“获取”这些数据。
简而言之,我喜欢像这样做一个简单的映射:
http://myesb.com:8280/getstatus.html将获取/var/myapp/status/appstatus.html文件的内容。
更新 我做了以下顺序 - 不知道如何使它工作:(
<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”
让我知道如何做到。
感谢您的时间。