通过JBoss的保险丝ESB的翻过多个网络
问题描述:
在我们本地网络的交互ServletApplication我们有一个通过流行Web浏览器访问现有网络IDE类型的应用。
我想用Jboss的FUSE ESB到是/ ACT为当地和该云/任何网络之间的隧道。
因此,我们通过一个网络浏览器客户端可以无缝地连接到浏览器所在网络的应用程序。通过ESB an始终发送req-res到客户端浏览器。通过JBoss的保险丝ESB的翻过多个网络
我使用的proxy approach:
- 我输入一个网址到浏览器,并重定向我使用ESB仅针对该应用程序第一次。
- 然后我开始以正常的方式与应用程序进行交互。但不通过ESB。
这是JBOSS-FUSE-ESB的可能性,还是这个任务的错误工具?
<camelContext trace="true" id="blueprintContext" xmlns="http://camel.apache.org/schema/blueprint">
<route id="REQUEST">
<from uri="jetty:http://0.0.0.0:1805/myRemoteApp?matchOnUriPrefix=true" id="TO-APP">
<description/>
</from>
<to uri="jetty:http://my.cpny.com:1804/myapp/mainServlet?bridgeEndpoint=true&throwExceptionOnFailure=false" id="RealServer-IN"/>
</route>
任何建议都非常欢迎。
答
听起来像你应该发送一个HTTP重定向状态码与网络浏览器应该使用的URL直接与服务器交互,而不使用ESB。
您可以设置http状态代码并使用Camel消息上的标头重定向位置,例如在第一次调用之后。
<route id="REQUEST">
<from uri="jetty:http://0.0.0.0:1805/myRemoteApp?matchOnUriPrefix=true" id="TO-APP">
<description/>
</from>
<to uri="jetty:http://my.cpny.com:1804/myapp/mainServlet?bridgeEndpoint=true&throwExceptionOnFailure=false" id="RealServer-IN"/>
.. // add logic here to compute the new url and set that as Location header. And then set a status code 30x for redirect
<setHeader headerName="HttpStatusCode"><constant>300</constant></setHeader>
<setHeader headerName="Location"><constant>http:blabla</constant></setHeader>
</route>
因此它不可能在第一次重定向后继续使用ESB吗? – yokodev
我不知道应用程序是如何告诉camel什么URL(响应)是/因为现在req-res只是应用程序,并且webBrowser ESB不在图片中 – yokodev
现在在第一次重定向之后(安全令牌生成等等)url保持不变,那么几乎所有东西都是ajax。 – yokodev