Jav*_*der 1 java spring wsdl web-services spring-boot
我正在使用 Spring Boot 2.0.1 来构建合同优先的 Web 服务。
我遵循了 Spring-boot 示例示例 -
https://spring.io/guides/gs/production-web-service/。
这工作得很好。
我的 wsdl 现在位于
http://localhost:8080/ws/countries.wsdl
Run Code Online (Sandbox Code Playgroud)
问题是将成为此 Web 服务使用者的应用程序需要将 wsdl url 写为
http://localhost:8080/ws/countries?wsdl
Run Code Online (Sandbox Code Playgroud)
根据帖子,我集成了 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>
Run Code Online (Sandbox Code Playgroud)
我找到了最好的解决方案。编写您自己的过滤器如下。您可以使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |