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

时间:2014-02-28 22:48:06

标签: java javascript spring tomcat single-page-application

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

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

但是,由于我无法控制的各种原因,我将不得不将前端和后端分成单独的项目,这些项目将单独开发和部署。这就产生了一个问题 - 如何在同一台开发机器上同时快速开发后端和前端的本地开发环境?前端servlet和后端servlet不能在同一个端口上运行,如果我将它们设置为使用不同的端口,那么浏览器不会让前端的javascript向后端发出请求没有设置CORS的servlet,我想避免使用它。

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

2 个答案:

答案 0 :(得分:0)

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

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

也许我不完全理解你的问题......

答案 1 :(得分: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嵌入式实例(在两个端口上)。