我试图使用Mule的WSProxyService来做这件事,但是在逐步执行相应的代码(使用调试器)之后,很明显这个类替换了端点地址.
问题是Spring-WS WSDL地址的样式是http://xxxx/xxxx.wsdl,但WSProxyService需要http://xxxx/xxxx?wsdl或http://xxxx/xxxx&wsdl.它用本地WSDL地址替换远程端点地址;它会在问号处切断远程WSDL地址,即’?WSDL’旨在被切断,因此要创建搜索项.但是由于Spring-WS,这不起作用.
要打破它:
WSProxyService最终试图使用
http://xxxx/xxxx.wsdl
取代
http://xxxx/xxxx
同
http://yyyy/yyyy
失败…导致实际的Web服务调用直接进行,而不是通过代理.
有没有人注意到/解决了这个问题?
干杯,达伦
解决方法 在Spring WS servlet前面检查url和params的servlet过滤器怎么样?如果匹配,则返回WSDL,否则您将请求通过,就好像什么都没发生一样.
如果您绝对必须附加WS?WSDL的URL,那么这应该是无关紧要的,并且将满足您的需求.
这是代码:
public class WsdlqueryCompatibilityFilter implements Filter { @OverrIDe public voID init(final FilterConfig filterConfig) throws servletexception { // do nothing } @OverrIDe public voID doFilter(final ServletRequest request,final ServletResponse response,final FilterChain chain) throws IOException,servletexception { final httpServletRequest httpServletRequest = (httpServletRequest) request; if ("GET".equals(httpServletRequest.getmethod()) && "wsdl".equalsIgnoreCase(httpServletRequest.getqueryString())) { httpServletRequest.getSession().getServletContext().getRequestdispatcher("/ws.wsdl") .forward(request,response); } else { chain.doFilter(request,response); } } @OverrIDe public voID destroy() { // do nothing }}总结
以上是内存溢出为你收集整理的web-services – Howto:配置Spring-WS以使用’?WSDL’样式URL发布WSDL文件?全部内容,希望文章能够帮你解决web-services – Howto:配置Spring-WS以使用’?WSDL’样式URL发布WSDL文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)