分离前端和后端Tomcat应用程序?

问题描述 投票:1回答:2

我目前有一个Spring应用程序,可以通过嵌入式Tomcat(通过spring-boot)在本地运行或调试,或者打包到war文件中并作为应用程序进行部署。 它具有一些RESTful服务,这些服务由单页应用程序使用。

现在,所有静态资产(包括前端javascript)都包含在/ src / main / webapp目录中。 这样可以快速开发后端(嵌入的tomcat可以快速重新启动以进行后端更改)和前端代码(对html / javascript / css所做的任何更改都可以在应用程序处于刷新状态时进行刷新)进行快速开发。以嵌入式模式运行)。

但是,由于我无法控制的各种原因,我将不得不将前端和后端分离为单独的项目,这些项目将分别开发和部署。 这就提出了一个问题-如何在同一台开发机器上以后端和前端的相同快速开发方式获得本地开发环境设置? 前端servlet和后端servlet不能在同一端口上运行,如果我将它们设置为使用不同的端口,则浏览器将不允许前端javascript向后端发出请求servlet无需设置CORS,我想避免这种情况。

最终,这两个应用程序将被部署到同一个Tomcat实例,否则,路由器会将流量路由到它们,以便它们仍在同一域中,这样它们就可以在没有CORS的情况下彼此通信。 但这对我进行本地开发没有帮助。

java javascript spring tomcat single-page-application
2个回答
0
投票

“前端servlet和后端servlet不能在同一端口上运行”是的,tomcat可以运行多个servlet,实际上它可以在同一实例上运行多个应用程序。 只需确保可以在URL级别区分应用即可,即

server.com/backend_app/
server.com/frontend_app/

也许我不太了解您的问题……


0
投票

我最终使用了nginx: http : //nginx.org/en/docs/windows.html

我在conf / nginx.conf中添加了以下内容:

    location /site1/ {
        proxy_pass http://localhost:8081/;
    }

    location /site2/ {
        proxy_pass http://localhost:8080/;
    }

并将我的两个应用程序(site1和site2)配置为分别在端口8081和8080上运行。 这有效地模拟了共享的tomcat部署(一个域/端口),同时使用了两个运行中的嵌入的tomcat实例(在两个端口上)。

© www.soinside.com 2019 - 2024. All rights reserved.