将WAR项目转为JAR项目遇配置文件缺失等问题求助
解决方案:将JAX-RPC WAR转为可执行JAR并解决Axis配置问题
1. 修复资源文件打包问题
JAR打包默认不会包含src/main/webapp下的文件,需修改pom.xml将server-config.wsdd打包进JAR:
<build> <resources> <resource> <directory>src/main/webapp</directory> <includes> <include>WEB-INF/server-config.wsdd</include> </includes> <targetPath>META-INF/resources</targetPath> </resource> </resources> <!-- 保留原有plugins配置,比如maven-jar-plugin指定主类 --> </build>
2. 在WebServiceServerConfig中配置嵌入式Tomcat
直接在带@Configuration的类中添加以下代码,指定Axis配置文件路径并注册Axis Servlet:
@Configuration public class WebServiceServerConfig { @Bean public TomcatServletWebServerFactory tomcatFactory() { return new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { WebResourceRoot resources = new StandardRoot(context); // 映射JAR内的WEB-INF资源到Tomcat的WEB-INF路径 resources.addPreResources( new DirResourceSet(resources, "/WEB-INF", ClassUtils.getDefaultClassLoader().getResource("META-INF/resources/WEB-INF").getPath(), "/") ); context.setResources(resources); } }; } @Bean public ServletRegistrationBean<AxisServlet> axisServlet() { ServletRegistrationBean<AxisServlet> registration = new ServletRegistrationBean<>(new AxisServlet(), "/services/*"); // 告诉Axis配置文件的位置 System.setProperty("axis.ServerConfigFile", "META-INF/resources/WEB-INF/server-config.wsdd"); return registration; } }
3. 补充缺失的依赖
错误提示缺少邮件与激活相关类,在pom.xml中添加依赖:
<dependencies> <!-- 原有依赖保留 --> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> </dependencies>
4. 验证要点
- 打包后检查JAR内是否存在
META-INF/resources/WEB-INF/server-config.wsdd - 启动应用后,Axis会读取指定路径的配置,
WEBPanelServices服务即可被正确识别
内容的提问来源于stack exchange,提问作者sfio
相关产品推荐
相关产品推荐

