<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shoili Rozario</title>
    <description>The latest articles on DEV Community by Shoili Rozario (@shoili_rozario_76aefaf1d8).</description>
    <link>https://dev.to/shoili_rozario_76aefaf1d8</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1729075%2F1b53a8c5-50c2-4bed-bc5f-3c53124ddd8c.png</url>
      <title>DEV Community: Shoili Rozario</title>
      <link>https://dev.to/shoili_rozario_76aefaf1d8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shoili_rozario_76aefaf1d8"/>
    <language>en</language>
    <item>
      <title>Deploying Spring boot project to external tomcat server.</title>
      <dc:creator>Shoili Rozario</dc:creator>
      <pubDate>Tue, 16 Jul 2024 11:10:22 +0000</pubDate>
      <link>https://dev.to/shoili_rozario_76aefaf1d8/deploying-spring-boot-project-to-external-tomcat-server-37g8</link>
      <guid>https://dev.to/shoili_rozario_76aefaf1d8/deploying-spring-boot-project-to-external-tomcat-server-37g8</guid>
      <description>&lt;p&gt;Although spring boot project comes with tomcat server itself. But sometimes we may have requirements to make our spring boot application on an external tomcat server. So, keeping knowledge on how we can deploy our spring boot project on external tomcat server is a plus point for every spring boot learner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the spring boot project:
&lt;/h2&gt;

&lt;p&gt;I have a simple project with a home route, which is showing "Hello World" to the browser.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvghlukpobrzzyw8una9b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvghlukpobrzzyw8una9b.png" alt="A restcontroller that has a function that returns " width="800" height="366"&gt;&lt;/a&gt;&lt;br&gt;
Now that I have my controller set up. Now I need to extend my &lt;strong&gt;DemoApplication&lt;/strong&gt; class to &lt;strong&gt;SpringBootServletInitializer&lt;/strong&gt; and should override the function configure just like I have shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;....
....
@SpringBootApplication
public class DemoApplication  extends SpringBootServletInitializer {
 @Override
 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  return application.sources(DemoApplication.class);
 }
 public static void main(String[] args) {
  SpringApplication.run(DemoApplication.class, args);
 }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I will now update my pom.xml file.&lt;br&gt;
&lt;code&gt;&amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!--for tomcat deployment --&amp;gt;
  &amp;lt;dependency&amp;gt;
   &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
   &amp;lt;artifactId&amp;gt;spring-boot-starter-tomcat&amp;lt;/artifactId&amp;gt;
   &amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;
  &amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxonmwzzpmitv6qjvcsbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxonmwzzpmitv6qjvcsbv.png" alt="pom.xml file final look" width="800" height="663"&gt;&lt;/a&gt;&lt;br&gt;
This image will make things clearer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;build&amp;gt;
  &amp;lt;finalName&amp;gt;my-app-2&amp;lt;/finalName&amp;gt;
  &amp;lt;plugins&amp;gt;
   &amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;
   &amp;lt;/plugin&amp;gt;
  &amp;lt;/plugins&amp;gt;
 &amp;lt;/build&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding &lt;em&gt;&lt;strong&gt;finalName&lt;/strong&gt;&lt;/em&gt; in the pom.xml will be helpful if you want to give custom .war file which we are going to get after the build process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build our Spring boot project:
&lt;/h2&gt;

&lt;p&gt;Now let's build our newly created spring boot application.&lt;br&gt;
&lt;code&gt;mvn clean package&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07ctdomo0m9yubbw44l5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07ctdomo0m9yubbw44l5.png" alt="Image description" width="800" height="154"&gt;&lt;/a&gt;&lt;br&gt;
It will build your spring boot application and will make a folder named &lt;strong&gt;target&lt;/strong&gt; in your root folder.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzk95utywe7jcqtfmcorg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzk95utywe7jcqtfmcorg.png" alt="the target folder" width="562" height="457"&gt;&lt;/a&gt;&lt;br&gt;
my-app-2.war is my required war file which can be used later on to deploy my web application to tomcat server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Tomcat Server:
&lt;/h2&gt;

&lt;p&gt;Now that we have .war file, lets install tomcat zip file from its official website. After download the zip file we need to extract that file and keep the extracted folder in the C-drive of our computer.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos8zwnp5ci3v8sotvgkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fos8zwnp5ci3v8sotvgkb.png" alt="apache tomcat" width="800" height="232"&gt;&lt;/a&gt;&lt;br&gt;
Note that you have to take compatible tomcat server for your application otherwise you cannot view your deployed app. As my spring boot version is 3.3.1, I have downloaded tomcat version 10. Check your spring boot version then choose the right version of your tomcat server.&lt;br&gt;
Now let's run our tomcat server using startup.bat command in windows. The file is in the bin directory.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F602sv7rprp6hvzo3nabu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F602sv7rprp6hvzo3nabu.png" alt="startup.bat" width="722" height="755"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmm5qwno9mpsd2lwc723g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmm5qwno9mpsd2lwc723g.png" alt="tomcat server home page" width="800" height="309"&gt;&lt;/a&gt;&lt;br&gt;
So, our tomcat server is running perfectly. Let's take the .war file from our spring boot project to tomcat servers webapps folder.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiuje9ag43o8n7g3s0dk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiuje9ag43o8n7g3s0dk.png" alt="builded war file in the tomcat webapps folder" width="748" height="292"&gt;&lt;/a&gt;&lt;br&gt;
Just paste your .war file and wait for 2 to 3 seconds. The server will automatically extract the folder out of the .war file. In the following image you can see I have my-app-2.war file, which is extracted to my-app-2 folder by the tomcat server itself.&lt;br&gt;
Now restart the tomcat server and your application will be accessible on &lt;a href="http://localhost:8080/my-app-2/" rel="noopener noreferrer"&gt;http://localhost:8080/my-app-2/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mpg25k3lzpx1fk140zq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mpg25k3lzpx1fk140zq.png" alt="Spring App on browser after deployment" width="800" height="211"&gt;&lt;/a&gt;&lt;br&gt;
I have changed my tomcat port to 8081 but you will see your app on 8080 as its default port.&lt;br&gt;
Thank you.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
