Apache camel 通过Jboss fuse ESB访问跨多个网络与Servlet应用程序交互

Apache camel 通过Jboss fuse ESB访问跨多个网络与Servlet应用程序交互,apache-camel,integration,esb,jbossfuse,jboss-esb,Apache Camel,Integration,Esb,Jbossfuse,Jboss Esb,在我们的本地网络中,我们有一个现有的web IDE类型的应用程序,可以通过流行的web浏览器访问该应用程序 我想使用Jboss FUSE ESBtobe/act作为本地和云/任何网络之间的隧道。 因此,我们可以通过web浏览器客户端连接到应用程序,而不必考虑浏览器所在的网络。始终通过ESB将数据发送到客户端浏览器 我正在使用: 我在浏览器中键入一个url,它将我重定向到仅第一次使用ESB的应用程序 然后我开始以正常的方式与应用程序交互。但不是通过ESB JBOSS-FUSE-ESB是否可能实

在我们的本地网络中,我们有一个现有的web IDE类型的应用程序,可以通过流行的web浏览器访问该应用程序 我想使用Jboss FUSE ESBtobe/act作为本地云/任何网络之间的隧道。
因此,我们可以通过web浏览器客户端连接到应用程序,而不必考虑浏览器所在的网络。始终通过ESB将数据发送到客户端浏览器

我正在使用:

  • 我在浏览器中键入一个url,它将我重定向到仅第一次使用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&amp;throwExceptionOnFailure=false" id="RealServer-IN"/>        
</route>


欢迎提出任何建议

听起来您应该发回一个HTTP重定向状态代码,其中包含web浏览器在不使用ESB的情况下直接与服务器交互时应该使用的url

您可以使用Camel消息上的头设置http状态代码和重定向位置,例如在第一次调用之后

<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&amp;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>

.. // 在此处添加逻辑以计算新url并将其设置为位置标头。然后为重定向设置状态代码30x
300
http:blabla

所以在第一次重定向后不可能继续使用ESB,对吗?我不知道应用程序将如何告诉camel URL(响应)是/是什么,因为现在req res只是应用程序,而webBrowser ESB在第一次重定向(生成安全令牌等)后不再出现在图片中。URL保持不变,那么几乎所有的东西都是ajax。