我从wsdl中使用cxf和camel创建了一个web服务。下面是我的bean配置:
@Bean
open fun cxfServlet(): ServletRegistrationBean<CXFServlet> {
val servlet = ServletRegistrationBean(CXFServlet(), "/ws/*")
servlet.setLoadOnStartup(1)
servlet.setName("cxfServlet")
return servlet
}
@Bean
open fun cxf(): Bus {
return BusFactory.newInstance().createBus()
}
@Bean("endpoint")
open fun endpoint(bus: Bus): CxfEndpoint {
val endpoint = CxfEndpoint()
endpoint.address = "/endpoint"
endpoint.serviceClass = IWebService::class.java
endpoint.wsdlURL = "wsdl/mywsdl.wsdl"
endpoint.dataFormat = DataFormat.POJO
endpoint.bindingId = SOAPBinding.SOAP11HTTP_BINDING
endpoint.isLoggingFeatureEnabled = true
endpoint.loggingSizeLimit = -1
return endpoint
}
我还配置了ssl。我使用springBoot,我的属性文件是:
服务器端口=8442安全。需要ssl=true服务器。ssl。密钥存储类型=PKCS12服务器。ssl。密钥存储=类路径:密钥存储。p12服务器。ssl。密钥存储密码=123456服务器。ssl。密钥别名=testalias
服务的wsdl位于以下地址:
https://localhost:8442/ws/endpoint?wsdl
在我使用带有块“策略”的WSDl之前,它一直运行良好:
<wsp:Policy wsu:Id="id">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
现在应用程序运行正确,但当我发送消息时会出现异常:
组织。阿帕奇。cxf。ws。政策PolicyException:无法满足这些策略选项:
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}TransportToken{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}HttpsToken公司{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}算法套件{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}基本256{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}布局
{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}严格
但是如果我在soapUI中创建服务器,它可以正常工作。
我尝试了一些关于从stackoverflow创建拦截器和其他的建议,但没有任何改变。我如何解决这个问题?
实际上,我通过使用IgnorablePolicyInterceptorProvider找到了某种解决方案。但据我所知,这只是忽视了政策,我认为这不是一个真正的解决方案:
val reg = bus.getExtension(PolicyInterceptorProviderRegistry::class.java)
val set = HashSet<QName>()
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "TransportBinding"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "TransportToken"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "HttpsToken"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "AlgorithmSuite"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "Basic256"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "Layout"))
set.add(QName("http://schemas.xmlsoap.org/ws/2005/07/securitypolicy", "Strict"))
reg.register(IgnorablePolicyInterceptorProvider(set))
您的Webservice是否受到SSL的保护?该错误抱怨WSDL中声明的安全策略未得到满足。
请注意,WSDL策略断言没有设置请求者和提供者之间的HTTPS传输!它们仅确保在调用具有已定义策略的web服务时,所声明的机制处于适当位置。
对于SoapUI,我真的不知道,但我假设它忽略了策略。
我正在为https://efactura.dgi.gub.uy:6470/eprueba/ws_personagetactempresarialprueba?wsdl第三方WSDL实现一个webservice客户机。 我使用apache-cxf3.0.4wsdl2java生成java clases。 我需要如何解决这个错误?
问题内容: 以前,我总是以为Vector在长度未知的情况下可以很好地用于非描述对象。据我所知,我也认为它也是线程安全的 有什么改变不应该再使用了,替代方案是什么? 问题答案: 您应该使用而不是。虽然使用了内部同步,但是对于实际的一致性而言,这很少够用,只会在真正不需要时降低执行速度。 另请参阅此stackoverflow问题。
这是我第一次尝试无痛脚本,但是几乎每个示例都使用“state”对象,这在我的版本中不可用。 即 导致:变量[state]未定义。 省略它也没有帮助 结果为:“变量[id_map]未定义。”在map_script部分 早期版本的替代方法是什么?
问题内容: 使用hibernate实现联合查询,我必须采取什么替代方法?我知道hibernate状态目前不支持联合查询,现在我看到的建立联合的唯一方法是使用视图表。 另一个选择是使用普通的jdbc,但是这样一来,我将失去所有示例/条件查询功能,以及hibernate对表/列执行的hibernate映射验证。 问题答案: 使用hibernate实现联合查询,我必须采取什么替代方法?我知道hibern
目前,Android的EditText在处理大量文本行(10000行)时速度非常慢。这种放缓似乎部分是由于EditText支持跨度,主要是由于EditText正在计算每行的宽度,这非常昂贵。EditText有什么更快的替代品,或者优化它以使其可用的方法吗? 编辑:方法跟踪如下:
问题内容: 出于各种原因,在编写 Java应用程序时 ,调用会被皱眉,所以如何通知调用过程并非一切都按计划进行? 编辑: 1是任何非零退出代码的。 问题答案: 当“应用程序”实际上是较大的Java应用程序(服务器)的子应用程序(例如servlet,applet)时,对的使用会被拒绝:在这种情况下,它可能会停止JVM并因此停止所有其他子应用程序。在这种情况下,抛出适当的异常(最好由应用程序框架/服务