`

cxf配置http:conduit

阅读更多
本次项目要通过https方式,调用外部的web service,所以在cxf的配置文件里进行配置如下:
<http:conduit name="*.http-conduit">

		<http:tlsClientParameters disableCNCheck="true"
			secureSocketProtocol="SSL">

			<!-- 对方的证书 -->
			<sec:trustManagers>
				<sec:keyStore type="JKS" password="changeit"
					file="/opt/inoc/wfm/certificates/remedy.keystore" />
			</sec:trustManagers>

			<!-- 己方的证书 -->
			<sec:keyManagers keyPassword="changeit">
				<sec:keyStore type="JKS" password="changeit"
					file="/opt/inoc/wfm/certificates/wfm.keystore" />
			</sec:keyManagers>

			<sec:cipherSuitesFilter>
				<sec:include>.*_EXPORT_.*</sec:include>
				<sec:include>.*_EXPORT1024_.*</sec:include>
				<sec:include>.*_WITH_DES_.*</sec:include>
				<sec:include>.*_WITH_NULL_.*</sec:include>
				<sec:exclude>.*_DH_anon_.*</sec:exclude>
			</sec:cipherSuitesFilter>

		</http:tlsClientParameters>

	</http:conduit>

结果发现影响了系统原有的web service客户端的功能

查看日志,异常信息如下:

2012-05-07 15:34:59,407 ERROR [STDERR] javax.xml.ws.soap.SOAPFaultException: Could not send Message.
2012-05-07 15:34:59,408 ERROR [STDERR] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)
2012-05-07 15:34:59,409 ERROR [STDERR] at $Proxy146.invoke(Unknown Source)
2012-05-07 15:34:59,409 ERROR [STDERR] at com.huawei.nsm.framework.service.engine.impl.WsInvoker.invoke(WsInvoker.java:104)
2012-05-07 15:34:59,410 ERROR [STDERR] at com.huawei.nsm.framework.service.engine.ServiceEngine.invoke(ServiceEngine.java:69)
2012-05-07 15:34:59,411 ERROR [STDERR] at com.huawei.nsm.framework.service.ServiceAccessor.invoke(ServiceAccessor.java:49)
2012-05-07 15:34:59,412 ERROR [STDERR] at com.huawei.wfm.workforce.task.sch.service.calculatepriority.CalculatePriorityService.calculate(CalculatePriorityService.java:57)
2012-05-07 15:34:59,412 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2012-05-07 15:34:59,413 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2012-05-07 15:34:59,414 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2012-05-07 15:34:59,415 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
2012-05-07 15:34:59,415 ERROR [STDERR] at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
2012-05-07 15:34:59,416 ERROR [STDERR] at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:162)
2012-05-07 15:34:59,417 ERROR [STDERR] at com.huawei.nsm.framework.utils.ClassUtil.invokeMethod(ClassUtil.java:45)
2012-05-07 15:34:59,418 ERROR [STDERR] at com.huawei.nsm.datasource.service.impl.DatasourceSaveServiceImpl.initSchedulePriority(DatasourceSaveServiceImpl.java:917)
2012-05-07 15:34:59,419 ERROR [STDERR] at com.huawei.nsm.workflow.service.AfterTicketSubmitedAsyncService$AfterTicketSubmitedAsyncRunnable.initSchedulePriority(AfterTicketSubmitedAsyncService.java:267)
2012-05-07 15:34:59,419 ERROR [STDERR] at com.huawei.nsm.workflow.service.AfterTicketSubmitedAsyncService$AfterTicketSubmitedAsyncRunnable.run(AfterTicketSubmitedAsyncService.java:183)
2012-05-07 15:34:59,420 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
2012-05-07 15:34:59,421 ERROR [STDERR] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
2012-05-07 15:34:59,422 ERROR [STDERR] at java.lang.Thread.run(Thread.java:662)

2012-05-07 15:34:59,422 ERROR [STDERR] Caused by: org.apache.cxf.interceptor.Fault: Could not send Message.
2012-05-07 15:34:59,423 ERROR [STDERR] at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:48)
2012-05-07 15:34:59,424 ERROR [STDERR] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:226)
2012-05-07 15:34:59,425 ERROR [STDERR] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:449)
2012-05-07 15:34:59,426 ERROR [STDERR] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
2012-05-07 15:34:59,426 ERROR [STDERR] at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:231)
2012-05-07 15:34:59,427 ERROR [STDERR] at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
2012-05-07 15:34:59,428 ERROR [STDERR] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:117)
2012-05-07 15:34:59,428 ERROR [STDERR] ... 18 more

2012-05-07 15:34:59,429 ERROR [STDERR] Caused by: java.io.IOException: Illegal Protocol http for HTTPS URLConnection Factory.
2012-05-07 15:34:59,430 ERROR [STDERR] at org.apache.cxf.transport.https.HttpsURLConnectionFactory.createConnection(HttpsURLConnectionFactory.java:126)
2012-05-07 15:34:59,431 ERROR [STDERR] at org.apache.cxf.transport.http.HTTPConduit.prepare(HTTPConduit.java:484)
2012-05-07 15:34:59,431 ERROR [STDERR] at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:46)
2012-05-07 15:34:59,432 ERROR [STDERR] ... 24 more

原来系统原有的web service客户端,走的http协议,但是配置文件里配置了
<http:conduit name="*.http-conduit">

以上配置会对所有的cxf客户端都生效,所以报异常

将这段配置改成:
<http:conduit name="https://10.78.8.172:443/.*">

仅针对目标https地址的web service客户端进行配置,对原有的web service客户端就不会造成影响了

总结:

1、<http:conduit>标签是对cxf的客户端,即<jaxws:client>产生影响,对<jaxws:endpoint>没有影响

2、<http:conduit name="*.http-conduit">会对所有的cxf客户端都生效,可以通过name属性,来指定生效范围
分享到:
评论

相关推荐

    apache-cxf-2.4.6.zip

    在"apache-cxf-2.4.6.zip"压缩包内,你会找到CXF的库文件、文档、示例代码和配置文件等。通过解压并导入到你的项目中,你可以开始利用这些组件构建和部署你的Web服务。不过,值得注意的是,由于这是较早的版本,可能...

    2.CXF安全访问之Http Basic Auth(一)

    &lt;http:conduit name="{http://cxf.apache.org/transports/http/configuration}*.http-conduit"&gt; &lt;http:client Authorization="Basic realm='My Realm'"/&gt; &lt;/http:conduit&gt; ``` 这段配置将所有CXF HTTP服务的请求都...

    apache cxf_jar包

    5. **cxf-rt-transports-http-2.7.12.jar**: HTTP传输模块,负责处理HTTP/S协议的通信,使得CXF能够通过HTTP和HTTPS进行Web服务调用。 6. **cxf-rt-databinding-aegis-2.7.12.jar**: Aegis数据绑定模块,提供了一种...

    cxf配置的详情信息说明

    cxf配置的详情信息说明,与springMVC的集成,以及相关文档配置

    apache-cxf-2.4.0

    Apache CXF是一个开源的Java框架,它主要用于构建和开发服务导向架构(SOA)和Web服务。CXF这个名字是“CXF = XFire + XSB”,其中XFire是早期的项目,而XSB代表XML Web Services Bus。这个版本,"apache-cxf-2.4.0...

    CXF实现SSL安全验证

    - `&lt;http:conduit&gt;` 定义了一个 HTTP 连接器,其中 `&lt;http:tlsClientParameters&gt;` 设置了 TLS 客户端参数,包括禁用 CN 检查以及信任管理器的配置。 - `&lt;jaxws:client&gt;` 定义了一个 Web Service 客户端,指定了服务...

    CXF视频:1、使用CXF实现简单的HelloWorld

    Apache CXF是一个开源的Java框架,它允许开发者构建和消费Web服务,支持多种协议如SOAP、RESTful HTTP以及WS-*规范。 【描述】提到的“CXF视频:1、使用CXF实现简单的HelloWorld”,意味着这个教学视频将详细介绍...

    cxf实例的java类和配置文件

    - CXF特定配置:可能还会有如`cxf-servlet.xml`这样的配置文件,用于设置CXF的拦截器、行为和故障处理器等。 3. 运行流程: - 服务器启动时,Spring容器加载配置文件并创建服务实现类的实例。 - `jaxws:endpoint...

    CXF配置.doc

    在上述配置中,`&lt;jaxws:endpoint&gt;`元素定义了服务的实现类和端点地址,而`&lt;cxf:bus&gt;`元素中的`&lt;cxf:features&gt;`部分可以添加额外的功能,如日志记录。 ### 4. 运行与测试 完成配置后,启动应用服务器,CXF服务就会...

    CXF整合spring同时支持JSON和XML配置的HelloWorld

    在上面的配置中,`&lt;cxf:features&gt;`元素启用了JSON支持,`&lt;cxf:jsr311/&gt;`则支持JAX-RS标准,使得CXF可以处理RESTful请求。`&lt;jaxws:endpoint&gt;`定义了服务的实现类和访问地址。 然后,创建一个Java类(如`...

    spring-cxf 日志记录配置.zip

    你可以配置`&lt;cxf:bus&gt;`元素下的`&lt;cxf:features&gt;`或`&lt;cxf:properties&gt;`标签来控制日志级别和实现。 - 例如,添加`&lt;cxf:property key="org.apache.cxf.logging.FrontendLoggerClass" value="org.apache.cxf.common....

    CXF源码:CXF_Spring源码

    通过Spring配置,我们可以轻松地声明CXF服务端点,并且利用Spring的IoC容器来管理服务实例,这样可以实现服务的松耦合和可测试性。 2. **CXF_Spring源码分析** 在`CXFSpring`目录中,可能包含了CXF与Spring整合的...

    apache-cxf-2.2.10安装包和如何配置到环境变量

    在本文中,我们将详细介绍如何安装和配置Apache CXF 2.2.10,并将其添加到系统的环境变量中。 首先,了解Apache CXF的基本概念至关重要。它是一个用于创建Web服务的工具,支持多种协议和标准,如SOAP、RESTful HTTP...

    cxf配置swagger2

    总的来说,"cxf配置swagger2"涉及到的步骤包括:添加依赖、创建Swagger配置类、配置Spring Boot应用扫描、以及在CXF服务中注册Swagger2 Feature。通过这些步骤,我们可以为CXF RESTful服务生成漂亮的文档并提供交互...

    cxf环境变量配置以及命令

    以下是配置 CXF 环境的基本步骤: 1. **下载 Apache CXF**:从官方下载页面获取最新版本的 CXF 二进制包,例如 `apache-cxf-2.1.3`。 2. **解压 CXF**:将下载的压缩包解压到一个适当的目录,如 `D:/opensource/...

    apache-cxf-3.1.0

    CXF的主要功能是提供一个灵活的服务框架,支持多种协议和服务标准,如SOAP、RESTful HTTP、XML、JSON等。在3.1.0版本中,该框架已经相当成熟,为开发者提供了丰富的功能和良好的社区支持。 首先,CXF的jar文件是...

    spring3.0整合cxf3.1.4所需的最小jar包

    &lt;/cxf:features&gt; &lt;/cxf:bus&gt; &lt;bean id="myService" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"&gt; &lt;property name="address" value="http://localhost:8080/myService"/&gt; ``` 3. 创建Web服务:...

    jdk21集成cxf示例程序

    &lt;/cxf:features&gt; &lt;/cxf:bus&gt; &lt;jaxws:endpoint id="helloWorldServiceEndpoint" implementor="#helloWorldService" address="/HelloWorld"/&gt; ``` 6. **部署与运行**:将配置好的CXF应用打包成WAR文件,...

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验

    SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验 ...通过本实验,我们可以学习到Spring Boot的自动配置和依赖管理功能、Mybatis的数据库操作功能和CXF的WebService开发功能。

Global site tag (gtag.js) - Google Analytics