Angular 11 + Spring Boot Deployment in Apache Tomcat:
- Org.apache.tomcat.jdbc.pool Spring Boot
- Apache Tomcat Spring Boot Download
- Spring Boot Deploy Tomcat
- Apache Tomcat Vs Spring Boot
- Spring Boot Tomcat Version
- The traditional way of deployment is making the Spring Boot Application @SpringBootApplication class extend the SpringBootServletInitializer class. Spring Boot Servlet Initializer class file allows you to configure the application when it is launched by using Servlet Container.
- In this tutorial, I show you how we can deploy a Spring Boot application using JSP to external Tomcat server. First we create a simple Spring boot web application with JSP then we will create a WAR file of it and finally we deploy the WAR file in the external tomcat server.
Spring Boot Starter Tomcat Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web Central (125). In this article, we will show you how to create a Spring Boot + Spring Data JPA + Oracle + HikariCP connection pool example. Tools used in this article: Spring Boot 1.5.1.RELEASE; Spring Data 1.13.0.RELEASE; Hibernate 5; Oracle database 11g express; Oracle JDBC driver ojdbc7.jar; HikariCP 2.6; Maven; Java 8; 1. Project Structure. To build our Tomcat-deployable WAR application, we execute the maven clean package. After that our WAR file is generated at /target/abc.war (where abc is assumed Artifact Id). We should consider that this new setup makes our Spring Boot Application a non-standalone application. Step 16: Create a WAR file by using the following steps: Right-click on the project - Run As - 5 Maven Build.
Pre requisite:
- Make sure you have Apache Tomcat 8+ is installed / zip version is available in your machine.
- Do Maven/Gradle build and keep the war file ready. (Have jar file ? then try running that as java -jar projectname.jar to run)
- Do ng build –prod and keep the dist/project_name folder ready.
Angular 11 deployment in Apache Tomcat
Generate prod build for your angular 9 project
Copy the dist/ folder content to the root of your Tomcat
Tomcat > webapps > paste the folder whatever you have copied inside the dist/ folder of your angular project.
Spring Boot War deployment in Apache Tomcat
Generate the prod war file of your spring boot project
Copy the .war file to Tomcat > webapps folder.
Tomcat start
Just go to the path Tomcat > bin and run startup.exe to run the tomcat server.
If the server is started successfully, then you will be able to open your angular 9 project in this link,
Your project will be available in this port:
http://localhost:8080/
Spring boot project ports will be as per your configuration in the application.properties file.
Possible Issues you may face
How to Setup Apache as Reverse Proxy for Tomcat Server using mod proxy - 2020
Assuming we already have installed Apache Httpd and Apache Tomcat, and running them on a Debian/Ubuntu compatible machine.
Apache server on the same host running on port 80. We'll use Apache server to get users requests and forward these requests to corresponding applications running on back-end Tomcat server on port 8080.
So, we need to configure Apache to transfer requests to tomcat.
Though there are several ways to do this, in this tutorial, we are going to use mod_proxy which is a general propose proxy module. This can be used to forward requests for a particular web application to a Tomcat instance, without having to configure a web connector such as mod_jk.
The main idea is to setup a VirtualHost exclusive for tomcat on a given path of our site.
Here is the /var/lib/tomcat8/webapps file structure. Under it we have our Spring Boot app (Spring Boot : Deploying War file to Tomcat 8's webapps) folder, gs-spring-boot-0.1.0:
We want to access home page of the app by http://tomcat.example.com:80. But Tomcat server, by default, listens to 8080, and that's why we want to use proxy setup for Apache.
In our local machine we've already setup the domain via /etc/hosts file:
You need to enable 2 modules: proxy and proxy_http using a2enmod command:
Apache server on the same host running on port 80. We'll use Apache server to get users requests and forward these requests to corresponding applications running on back-end Tomcat server on port 8080.
So, we need to configure Apache to transfer requests to tomcat.
Though there are several ways to do this, in this tutorial, we are going to use mod_proxy which is a general propose proxy module. This can be used to forward requests for a particular web application to a Tomcat instance, without having to configure a web connector such as mod_jk.
The main idea is to setup a VirtualHost exclusive for tomcat on a given path of our site.
Here is the /var/lib/tomcat8/webapps file structure. Under it we have our Spring Boot app (Spring Boot : Deploying War file to Tomcat 8's webapps) folder, gs-spring-boot-0.1.0:
We want to access home page of the app by http://tomcat.example.com:80. But Tomcat server, by default, listens to 8080, and that's why we want to use proxy setup for Apache.
In our local machine we've already setup the domain via /etc/hosts file:
You need to enable 2 modules: proxy and proxy_http using a2enmod command:
Here is the Apache VirtualHost configuration, /etc/apache2/sites-available/tomcat.example.com:
The key lines are ProxyPass*:
At the '/' request, the traffics are forwarded to http://localhost:8080//gs-spring-boot-0.1.0/ via port 8080 which Tomcat is listening to. Note also it goes to gs-spring-boot-0.1.0 which is the our app name (app.war).
Then, we need to make a link for sites-enables:
After enabling the site, we can check if it's really setup:
To disable it:
Let's restart the server:
Org.apache.tomcat.jdbc.pool Spring Boot
As we can see from the picture below, we're now able to access via our domain name (tomcat.example.com) with port 80:
To access Tomcat home, we can still use localhost:8080:
It looked like the Proxy setup was complete but later I found there was an issue of keeping the session id. It appears whenever we proxied, a new session is created, so page navigation starts to break.
After a couple of tries, I came up with a solution though not perfect. The url has to have domain/x, and here is my configuration for the proxy on Apache:
The redirect from '/' to '/x' is a side-effect of my solution. Otherwise, it goes to tomcat manager page but not to my root page.
Here is my site deployed on my VPS:
Please let me know if you know how to remove the x in the url.
Apache Tomcat Spring Boot Download
The source is available from spring-mvc-showcase.