Embedded Servers
Spring Boot applications mein, WEB SERVER (Tomcat DEFAULT hai) EMBEDDED hota hai — APPLICATION KE ANDAR hi, ek DEPENDENCY ki tarah. Ye TRADITIONAL Java web development se BADA SHIFT hai, JAHA WAR FILES ko SEPARATELY-installed Tomcat/JBoss server par DEPLOY karna padta tha.
Embedded server ka SABSE BADA FAYDA — STANDALONE DEPLOYMENT. java -jar app.jar se DIRECTLY application RUN ho jaati hai, KOI EXTERNAL server SETUP/CONFIGURE karne ki zaroorat NAHI. Ye DOCKER CONTAINERS, CLOUD PLATFORMS (AWS, Kubernetes) ke liye PERFECT FIT hai — HAR CONTAINER, KHUD KA embedded server LEKAR CHALTA hai.
// spring-boot-starter-web AUTOMATICALLY Tomcat EMBED karta hai:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
// Embedded Tomcat AUTOMATICALLY start, PORT 8080 par
}
}
// server configuration (application.properties):
server.port=8081
server.tomcat.max-connections=10000
server.tomcat.threads.max=200- Embedded server = application KE ANDAR HI web server, ALAG deployment NAHI
- java -jar app.jar = SEEDHA run, koi EXTERNAL server setup NAHI chahiye
- Docker/Kubernetes ke liye PERFECT fit — HAR container APNA server LEKAR CHALTA hai
Default embedded server TOMCAT hai, LEKIN spring-boot-starter-web se Tomcat EXCLUDE karके, Jetty ya Undertow SWITCH kiya ja sakta hai — jaise Undertow BENCHMARK mein aksar THODA FASTER aur LESS MEMORY use karta hai, kuch USE-CASES ke liye.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>Embedded server ka THREAD POOL (kitni CONCURRENT requests HANDLE ho sakti hain) properties se TUNE kiya ja sakta hai — server.tomcat.threads.max, server.tomcat.threads.min-spare — HIGH-TRAFFIC applications ke liye IMPORTANT TUNING PARAMETER.
server.tomcat.threads.max=200
server.tomcat.threads.min-spare=10
server.tomcat.connection-timeout=5s