我有一个第三方servlet在JAR文件中,我无法更改它。我扩展了该servlet并像通常使用servlet一样使用它,客户端通过HTTP请求调用我的servlet。
但现在客户需要自动服务,也就是说,我需要从同一个Web应用程序向第三方servlet发出一些请求。
我查看了第三方servlet代码,但没有找到绕过servlet的地方,因为HttpServletRequest和HttpServletResponse对象是从方法传递到方法...基本上看起来我需要重新实现所有第三方代码。
解决方案我找到了,但不满意:
- 使用HttpURLConnection从URL调用servlet:我的常识告诉我,从URL调用第三方servlet不是最好的方法,除了增加开销外,我不想暴露第三方servlet。从URL调用我的servlet还会带来会话和其他问题。 - 直接调用doGet:这似乎是不可能的,因为没有HttpServletRequest和HttpServletResponse的实现。 - 使用jMock或类似的东西:尚未探索此解决方案,但在真实环境中使用测试驱动库似乎是错误的。
有人有什么想法如何与第三方servlet交互吗?
编辑:
由于我的英语不太好,我发现很难解释自己,所以这里有一个示意图,试图更好地解释
第三方制造商在会议后提供了隔离我需要避免调用servlet的方法。如果你没有像我一样幸运,那就看看gigadot和BalusC的答案吧。
但现在客户需要自动服务,也就是说,我需要从同一个Web应用程序向第三方servlet发出一些请求。
我查看了第三方servlet代码,但没有找到绕过servlet的地方,因为HttpServletRequest和HttpServletResponse对象是从方法传递到方法...基本上看起来我需要重新实现所有第三方代码。
解决方案我找到了,但不满意:
- 使用HttpURLConnection从URL调用servlet:我的常识告诉我,从URL调用第三方servlet不是最好的方法,除了增加开销外,我不想暴露第三方servlet。从URL调用我的servlet还会带来会话和其他问题。 - 直接调用doGet:这似乎是不可能的,因为没有HttpServletRequest和HttpServletResponse的实现。 - 使用jMock或类似的东西:尚未探索此解决方案,但在真实环境中使用测试驱动库似乎是错误的。
有人有什么想法如何与第三方servlet交互吗?
编辑:
由于我的英语不太好,我发现很难解释自己,所以这里有一个示意图,试图更好地解释
第三方制造商在会议后提供了隔离我需要避免调用servlet的方法。如果你没有像我一样幸运,那就看看gigadot和BalusC的答案吧。