2009-07-15 107 views
2

我正在研究一个项目,我们希望从我们的一个旧应用程序中提取内容,但是,我们希望避免显示“等待www.somehostname.com/someproduct/ ..”。 。“给用户。Java HTTP代理

我们可以很容易地添加指向同一服务器的另一个域,但我们仍然存在URL中的someproduct上下文根的问题。仅仅更改上下文根并不是一种选择,因为传统应用程序中有数百个硬编码位指向现有的上下文根。

我想要做的是能够发送请求到不同的上下文根(说/foo/bar.do),并让它实际上去/someproduct/bar.do(但没有重定向,所以浏览器仍然显示/foo/bar.do)。

我发现了一些类似的URL重写选项,但到目前为止,它们似乎都被限制为仅向/从相同的上下文根捕获/转发请求。

有没有处理这类事情的项目?我们正在使用weblogic 10.3(在旧版应用上它是weblogic 8)。理想情况下,我们可以将此作为新应用的一部分,但如果必须,我们还可以在旧应用中添加一些内容。

或者,是否有一些完全不同的解决方案可以更好地工作,我们还没有?

更新:我应该提到,我们原先建议使用mod_rewrite或类似的东西来使用apace,但管理/托管服务人员已经对此解决方案大加赞赏。 :/

更新2的更多信息:

其中用户能够看到旧的URL /上下文根的地方有那些从旧的应用程序加载到一个iframe在页/工作流程做新的应用程序。

因此,客户端可以看到两个应用程序之间的通信没有什么特别之处,它是由浏览器处理的普通的旧HTTPS。

+0

我的朋友有一只名为“TM”的猫。它代表“麻烦制造者”。 :) – 2009-07-15 19:44:17

+0

这是用叉子吃汤的软件。说服你的管理和托管与Apache。事情并没有变得更加稳固。配置一次,你可能永远不需要重新启动或再次担心它。推回! – Pablojim 2009-07-15 21:55:20

+0

@Pablojim我推迟了这个问题,由于多种原因,它并不是真的出现在卡片中。但是,我们对这两种替代方案的工作进行了估计,结果发现没有一项工作很重要。我们最终添加了另一个指向相同负载平衡器的域名。管理层决定,在URL中使用'/ someproduct /'位并不是很糟糕,因为他们在没有获得apache服务器的情况下看到了删除它的代价。 – 2009-08-23 17:38:12

回答

2

我认为你应该可以使用一个相当简单的自定义servlet来完成此操作。

在高层次上,你会:

  • 地图的servlet来样/富/ *
  • 映射在servlet的实现,简单地采取请求的pathInfo,并用它来作请求传统站点(使用HttpUrlConnection或Apache Commons等价物)。
  • 将响应传递给客户端(某些处理可能需要处理标头)。
2

为什么不用前面的weblogic与Apache

这是一个非常标准的设置,也会带来很多其他优点。在Apache中的URL重写得到了很好的支持,文档非常好。

不要被设置拖延,它很简单,如果需要,你可以在同一个盒子上运行apache。

+1

只是一个说明,我认为这是做到这一点的“正确”方式,但由于我特别排除此选项对此问题有所限制,因此我不能将其标记为接受的答案。但是,对于那些没有这些限制的人,他们可能正在阅读:使用此选项! – 2009-08-23 17:39:20

0

客户端正在处理的API的更多上下文将有助于在这里提供可行的解决方案。您是否试图提供完全不同于传统Java EE应用程序的全新API?什么工件服务于API(Servlet,EJB,REST服务)?

如果你有一个由不同的企业应用程序提供的API,那么我想你只需使用Pojo类作为传统应用程序的网关,然后通过另一个上下文根就可以访问原因,而不是新的服务应用程序。该解决方案会假设您知道所有传统API方法,并可将它们映射到新API的调用。

对于一个通用的解决方案,您不必担心被调用的方法。我很好奇,如果代理方法可以真正工作。通过URL重写,用户凭证是否也会被正确地提供给遗留系统?您是否必须切换到不同的用户来使用传统呼叫而不是使用原始呼叫者?这可能与URL重写。不知道这是否可以在安全的情况下工作。

也许你可以在这里提供更多的信息。

+0

好吧,我们使用了REST服务和Servlet,但这些都是服务器端的,因此隐藏URL并不是那里的问题。但是,问题出现在我们在新应用程序的iframe中加载页面(旧应用程序使用struts)。 – 2009-07-15 20:12:47

+0

Hi TM,我似乎JackLeow推荐了一个解决方案,涵盖了上面我的问题的更一般的情况。我寻找一个项目,并可能取得成功:请看看UrlRewriteFilter。欢呼迈克尔 – marksml 2009-07-19 07:20:29