JAX-WS服务启动失败:Schema验证遇W3C HTTPS重定向异常
JAX-WS启动失败(xmlmime解析异常)解决方案
针对你遇到的因W3C HTTP转HTTPS重定向导致的SAXParseException,以下是几个可行的解决方案:
1. 本地映射xmlmime.xsd,避免远程请求
- 先获取
xmlmime.xsd文件,把它放到项目src/main/resources/xsd目录下。 - 创建
src/main/resources/META-INF/jax-ws-catalog.xml文件,用catalog映射远程URL到本地资源:<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <rewriteURI uriStartString="http://www.w3.org/2005/05/xmlmime" rewritePrefix="classpath:xsd/xmlmime.xsd"/> </catalog> - 确保构建工具将这个catalog文件打包到
WEB-INF/classes/META-INF目录,这样JAX-WS会优先加载本地xsd文件,不再发起远程请求。
2. 配置jaxws-ri支持HTTPS重定向
jaxws-ri 2.3.5默认HTTP客户端不自动处理重定向,可通过自定义配置开启:
- 写一个工具类配置重定向:
import com.sun.xml.ws.transport.http.client.HttpTransportPipe; import com.sun.xml.ws.transport.http.client.HttpTransportPipeFactory; import java.util.Map; import javax.xml.ws.BindingProvider; public class RedirectConfig { public static void enableRedirect(BindingProvider provider) { Map<String, Object> reqContext = provider.getRequestContext(); reqContext.put(HttpTransportPipeFactory.HTTP_TRANSPORT_PIPE_PROPERTY, new HttpTransportPipe() { @Override protected void configureHttpClient(com.sun.xml.ws.transport.http.client.HttpClient client) { client.setFollowRedirects(true); } }); } } - 在服务发布或客户端初始化时调用
RedirectConfig.enableRedirect(bindingProvider)即可。
3. 临时禁用Schema验证(应急用)
如果需要快速恢复服务,可暂时移除@SchemaValidation注解,跳过XML Schema的远程解析验证。注意这会关闭验证机制,可能带来数据格式风险,仅作为临时过渡方案。
4. 升级jaxws-ri版本
jaxws-ri 2.3.6及以上版本已修复HTTPS重定向处理问题,可尝试升级依赖:
- Maven项目修改pom.xml:
<dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.3.6</version> </dependency>
内容的提问来源于stack exchange,提问作者Dove
相关产品推荐
相关产品推荐

