基于Java与Maven搭建Tomcat 10运行的SOAP Web服务的相关问题
Tomcat 10上Java SOAP Web服务的Maven项目配置指南
一、Maven原型(Archetype)选择
优先选maven-archetype-webapp,这是最通用的Java Web项目原型,能快速生成符合Servlet规范的目录结构,完美适配Tomcat 10。
如果想找更贴合SOAP服务的原型,部分JAX-WS相关的原型可能存在版本滞后问题(未更新到Jakarta EE),反而不如通用的webapp原型灵活——后续自己添加SOAP相关依赖即可,成本更低。
二、能否不使用原型创建项目?
完全可以。直接创建空Maven项目,手动搭建目录结构:
- 核心目录:
src/main/java(存放Java代码)、src/main/resources(资源文件)、src/main/webapp(Web根目录) - 必须的Web目录:
src/main/webapp/WEB-INF,如果不用web.xml可以靠注解配置Servlet,否则需要在该目录下添加web.xml
这种方式自由度更高,适合对项目结构有明确规划的场景。
三、pom.xml基础配置部分
你的pom.xml需要包含以下核心模块:
1. 项目基本信息
定义项目的groupId、artifactId、版本号,以及打包类型为war(因为要部署到Tomcat):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>soap-web-service</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>SOAP Web Service</name> </project>
2. 依赖配置
Tomcat 10基于Jakarta EE(替代原Java EE),所以依赖要选Jakarta规范的包:
<dependencies> <!-- Jakarta Servlet API:Tomcat自带,设为provided避免打包冲突 --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> <!-- JAX-WS API:SOAP服务的核心API --> <dependency> <groupId>jakarta.xml.ws</groupId> <artifactId>jakarta.xml.ws-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> <!-- JAX-WS 实现:Tomcat10不自带,需引入运行时依赖 --> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>4.0.2</version> <exclusions> <!-- 排除冲突的Servlet依赖 --> <exclusion> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
3. 构建配置
配置Maven插件确保编译、打包符合要求:
<build> <plugins> <!-- Maven War插件:打包成符合Jakarta规范的WAR包 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <!-- 如果用注解替代web.xml,设为false避免报错 --> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <!-- 编译插件:指定Java版本(Tomcat10支持Java8+,推荐11/17) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build>
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

