【问题标题】:Changing port on which an Axis web service is listening to更改 Axis Web 服务正在侦听的端口
【发布时间】:2010-10-02 10:16:25
【问题描述】:

我有一个在端口 :80 上运行的 Web 应用程序,并且我有一个 Axis Web 服务,它是该 Web 应用程序的一部分。因此,该服务也在端口 :80 上运行。

但是,出于安全原因,我们的客户要求我们将 Web 服务端口更改为 8080,以便他们只能允许 Web 服务的远程使用者访问该端口。因此,他们将无法访问常规 Web 应用程序,但可以访问服务。

是否可以在不重构应用并在单独的 Web 应用中取出 Web 服务的情况下做到这一点?

【问题讨论】:

  • 运行应用程序的是什么?雄猫? (抱歉,如果 Axis 现在包含自己的 Web 服务器 - 我认为它曾经只是一个可以在任何 servlet 容器中运行的 servlet。)
  • 应用程序托管在 Oracle AS 10g 上,前面有一个 Oracle Web Cachesitting(基本上是一个带有缓存模块的 Apache httpd)。我已经设法通过配置网络缓存来监听端口 8080 来解决这个问题,并将在 :8080 上收到的所有请求重写到服务。

标签: java http binding axis port


【解决方案1】:

简短的回答可能是 - 是的,这是可能的。

Axis web 服务大多与主应用程序足够分离,如果无法配置任何 web 服务器,应该很容易让它们在不同的 Java web 服务器实例上运行,该实例只能在端口 8080 上运行running 也可以在端口 8080 上运行,并仅在该端口上提供 Web 服务。

【讨论】:

    【解决方案2】:

    您应该能够使用端口 8080 连接器设置单独的服务。

    实际上,您将在您的实例中运行 2 个“迷你”-Tomcat。

    基本上,

    <Service> <!-- normal service -->
      <Connector port="80" />
    </Service>
    <Service> <!-- custom service -->
      <Connector port="8080" />
      <Engine>
         <Host />
      </Engine>
    </Service>
    

    如果这个解决方案不能正常工作,它确实会带来一些调试噩梦,因此运行第二个服务器(可能是 Jetty)可能会更容易。

    【讨论】:

      【解决方案3】:

      正如我在评论中所说,我们的 Web 应用程序托管在 Oracle AS 10g 上,前面有一个 Oracle Web 缓存服务器。 Oracle Web Cache 基于 Apache httpd,因此它支持虚拟主机和 URL 重写(尽管在这些条款下不存在)。

      我已经通过以下方式解决了这个问题:

      它就像一个魅力。

      至于 Axis 本身,我没有找到将其配置为自行侦听另一个端口的方法。我想期望 Axis 提供此功能是不合理的,因为它只是托管在 servlet 容器中的一个 servlet,而提供连接器/传输层是容器的工作。

      无论如何...感谢所有提供帮助的人,我很感激。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 2019-01-03
        • 2011-04-03
        • 2021-12-16
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多