gpt4 book ai didi

java - SpringBoot WS 中的 WSDL(点)与(问号)表示法

转载 作者:行者123 更新时间:2023-11-29 08:29:05 28 4
gpt4 key购买 nike

我正在使用 Spring Boot 2.0.1 构建契约(Contract)优先 Web 服务。

我遵循了 Spring-boot 示例 -

https://spring.io/guides/gs/producing-web-service/ .

这很好用。

我的 wsdl 现在位于

http://localhost:8080/ws/countries.wsdl 

问题是,将成为此 Web 服务消费者的应用程序需要将 wsdl url 编写为

http://localhost:8080/ws/countries?wsdl

根据帖子,我集成了 turkey UrlRewriteFilter How to use Tuckey urlrewrite in spring boot to access service using ?wsdl

但是,URL 重写并没有按预期发生。我的 urlrewrite.xml 看起来像这样。从日志中我发现它正在获取 xml 文件但没有进行 url 重写。我哪里错了?

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite>
<rule>
<from>/countries?wsdl</from>
<to>/countries.wsdl</to>
</rule>
</urlrewrite>

最佳答案

我找到了最佳解决方案。按如下方式编写您自己的过滤器。您可以使用 HttpServletRequestWrapper 来处理 ?wsdl 扩展并让服务器处理请求。

import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.IOException;

@Component
public class WSDLQuestionMarkReplaceFilter implements Filter {

@Override
public void init(FilterConfig filterConfig) throws ServletException {
//put init logs
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
if ("wsdl".equalsIgnoreCase(httpRequest.getQueryString())) {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(httpRequest) {
@Override
public String getQueryString() {
return null;
}

@Override
public String getRequestURI() {
return super.getRequestURI() + ".wsdl";
}
};
chain.doFilter(requestWrapper, response);
} else {
chain.doFilter(request, response);
}
}

@Override
public void destroy() {
//put destroy logs
}
}

关于java - SpringBoot WS 中的 WSDL(点)与(问号)表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790535/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com