Java EAR和WAR的概念及用法
引言
在Java开发中,我们经常听到EAR和WAR这两个名词。它们是Java企业级应用程序的打包和部署方式。本文将详细介绍EAR和WAR的概念、用法以及示例代码。
EAR和WAR的概念
- EAR(Enterprise Archive)是一种Java企业级应用程序的打包格式,它包含一个或多个WAR文件、EJB(Enterprise JavaBeans)模块、JAR(Java Archive)文件以及其他资源文件。EAR文件采用ZIP格式,扩展名为.ear。
- WAR(Web Archive)是一种Java Web应用程序的打包格式,它包含Web应用程序的所有资源,例如HTML、CSS、JavaScript、JSP等文件。WAR文件同样采用ZIP格式,扩展名为.war。
EAR和WAR的用途
- EAR文件用于打包和部署Java企业级应用程序。它可以包含多个WAR文件,用于部署多个独立的Web应用。
- WAR文件用于打包和部署Java Web应用程序。它是一种轻量级的打包格式,方便在Web服务器上部署和发布。
EAR和WAR的示例代码
下面是一个使用Maven构建EAR和WAR的示例项目结构:
.
├── ear-example
│ ├── pom.xml
│ └── src
│ └── main
│ └── application
│ └── META-INF
│ └── application.xml
└── war-example
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── HelloServlet.java
├── resources
└── webapp
├── WEB-INF
│ └── web.xml
└── index.jsp
ear-example/pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<packaging>ear</packaging>
<groupId>com.example</groupId>
<artifactId>ear-example</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>war-example</artifactId>
<version>1.0.0</version>
<type>war</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<modules>
<webModule>
<groupId>com.example</groupId>
<artifactId>war-example</artifactId>
<contextRoot>/war-example</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
war-example/pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<groupId>com.example</groupId>
<artifactId>war-example</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</build>
</project>
HelloServlet.java
package com.example;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("Hello, World!");
out.println("</body>");
out.println("</html>");
}
}
web.xml
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
application.xml
<application xmlns="