我有一个在端口:80 上运行的 Web 应用程序,并且我有一个 Axis Web 服务,它是该 Web 应用程序的一部分。因此,该服务也在端口 :80 上运行。
但是,出于安全原因,我们的客户要求我们将 Web 服务端口更改为 8080,以便他们只能允许 Web 服务的远程消费者访问该端口。因此,他们将无法访问常规 Web 应用程序,但可以访问该服务。
这是否可以在不重构应用程序并在单独的 Web 应用程序中取出 Web 服务的情况下实现?
正如我在评论中所说,我们的 Web 应用程序托管在 Oracle AS 10g 上,前面有一个 Oracle Web 缓存服务器。Oracle Web Cache 基于 Apache httpd,因此它支持虚拟主机和 URL 重写(尽管在这些条款下不存在)。
我设法通过以下方式解决了这个问题:
它就像一个魅力。
至于 Axis 本身,我没有找到将其配置为自行侦听另一个端口的方法。我想期望 Axis 提供此功能是不合理的,因为它只是托管在 servlet 容器中的一个 servlet,而提供连接器/传输层是容器的工作。
无论如何...感谢所有提供帮助的人,我很感激。
简短的回答可能是 - 是的,这是可能的。
Axis Web 服务大多与主应用程序足够分离,因此应该很容易让它们在不同的 Java Web 服务器实例上运行也在端口 8080 上,并且仅在该端口上提供 Web 服务。
您应该能够使用端口 8080 连接器设置单独的服务。
实际上,您将在您的实例中运行 2 个“迷你”-Tomcat。
基本上,
<Service> <!-- normal service -->
<Connector port="80" />
</Service>
<Service> <!-- custom service -->
<Connector port="8080" />
<Engine>
<Host />
</Engine>
</Service>
如果它不能正常工作,感觉这个解决方案可能会带来一些调试噩梦,因此运行第二台服务器(可能是 Jetty)可能会更容易。