gpt4 book ai didi

java - 如何配置 Tomcat 使 Java Jersey 作为 Web 应用程序在不同的端口上运行

转载 作者:行者123 更新时间:2023-11-28 22:12:08 24 4
gpt4 key购买 nike

我正在开发 Java Server Faces 动态 Web 应用程序。我有一些机器人通过 Jersey 的 RETSful Web 服务与这个 Web 应用程序通信。到目前为止一切顺利,一切正常。

但我想要的是给网络应用程序和网络服务不同的端口。 Tomcat 的 server.xml 中的配置我无法控制。

Does somebody know how to configure Connectors, Engine or Context in that context? Remark: The Web Services work properly. I just want the service to run on another port than the rest of the application.

示例:

http://localhost:8080/mywebapp/rest/helloworld 应该有端口 4444http://localhost:8080/mywebapp/faces/index.xhtml 应该保留端口 8080

如果您有任何问题,请随时发表评论,我会回复。


更新

我只有一个 WAR 文件。在这个 WAR 文件中,我有两个不同的 servlet(JSF 和 Jersey)。这两个 servlet 应该在两个不同的端口上运行。我只需要 Jersey 的 servlet 的连接器和 JSF Servlet 的连接器。

我为什么要这个配置?

我不希望任何人访问我的 Jersey-Servlet。传输的 XML 不包含 super secret 信息,但没有人需要看到它。它仅用于与机器人通信。

用户应查阅所传送内容所展示的网站。机器人不需要访问 web 应用程序(servlet)的这一部分。

必须解决此安全问题。

最佳答案

评论太长了,所以我添加另一个答案:

好的,据我了解,如果客户端正在使用端口 8080 访问应用程序。并且您想使用中可用的配置文件来执行此操作一个tomcat服务器。 AFAIK 这是不可能的,因为唯一知道端口的配置子句(server.xml 中的连接器)不知道 URL (/rest/) 中标识您要阻止的应用程序部分的部分。而知道 URL 的应用程序配置文件(web.xml 和其他)不知道端口!但是还有其他一些选择可以做到这一点。描述一些:添加一个 apache 网络服务器作为您的代理 Tomcat 。这是标准做法,因为它具有安全优势,但如果您认为此解决方案工作量太大,我可以理解。另一种可能性是将您的 JSF 和 REST 代码拆分为两个单独部署的 war 。接下来,您在 server.xml 中定义了两个服务,并如前所述为各自的端口放置了一个连接器。然后在 host 子句的 appBase 参数中,您可以指定放置您的 rest 代码和 jsf 代码的位置。这个解决方案当然让人想起 xerx593 描述的解决方案,但是这里面有很多工作要做,我试过了大约10分钟。当然,如果两个模块有共同的代码,可能很难拆分应用程序,但你总是可以将共同的代码部署两次。如果您检查请求的端口或客户端地址,您也可能会阻止代码中的请求。 Spring 可能对此有所帮助。

关于java - 如何配置 Tomcat 使 Java Jersey 作为 Web 应用程序在不同的端口上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com