我将spring boot ws应用程序与apache cxf一起使用以提供SOAP Web服务。所有配置的URL都使用相对路径,以便可以在灵活的部署中使用该应用程序。
在生产环境中,该应用程序在负载平衡器后面运行,并强制客户端使用https。但是尽管wsdl本身是使用 https 公开的,但生成的wsdl仍保留其 http 协议。
这是spring端点配置:
<section>
<div class="parallax-bg" style="background-image: url('https://unsplash.it/1200/700')">
<div class="parallax parallax-text">"Lorem Ipsum Lorem Ipsum"</div>
</div>
</section>
<div class="wrapper">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
.parallax-bg {
display: flex;
align-items: center;
border-bottom: 2px solid #fff;
height: 90vh;
min-height: 420px;
width: 100%;
background-position: bottom center;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
.parallax-text {
position: fixed;
font-size: 28px;
font-style: italic;
color: #13284a;
display: block;
background: rgba(255, 255, 255, 0.7);
padding: 15px 20px;
margin-left: 45px;
}
.wrapper {
position: relative;
background: #fff;
}
如何调整生成的wsdl,使其切换为https? 或者更好:是否可以强制协议使用与暴露的wsdl本身相同的协议?
最好, 拉斯
答案 0 :(得分:0)
我的项目中也遇到了类似的问题,我通过使用spring boot参数解决了这个问题。我们有一个ngnix服务器,它接收请求并转发到具有Spring Boot应用程序的后端计算机。
在ngnix配置中添加了以下参数。
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Scheme https;
后来,在Spring Boot应用程序中添加了以下参数
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
此服务器开始将https附加到URL之后。
答案 1 :(得分:0)
在spring-boot应用程序中,如果您使用的是cxf框架,则可以添加自定义拦截器以传递自定义网址。
public class MyInInterceptor extends AbstractInDatabindingInterceptor {
private String url;
public CustomInInterceptor(String url) {
super(Phase.USER_STREAM);
this.url = url;
}
@Override
public void handleMessage(Message message) throws Fault {
message.put("org.apache.cxf.request.url", url);
}
}
您需要在配置文件中像这样配置此拦截器。
EndpointImpl endpoint = new EndpointImpl(bus, communicationPortTypeImpl);
List<Interceptor<? extends Message>> interceptors = new ArrayList<>();
interceptors.add(new MyInInterceptor(endpointUrl));
endpoint.setInInterceptors(interceptors);
endpoint.publish("/myEndPoint");