Apache Camel配置SSL的CXF
来源:互联网 发布:linux如何创建账户 编辑:程序博客网 时间:2024/05/25 21:36
系统环境:
java version "1.8.0_66"
apache camel: 2.15.2
一:创建证书,并导出公钥证书
二:
1: 加入maven依赖
<dependency><groupId>org.apache.camel</groupId><artifactId>camel-cxf</artifactId><version>2.15.2</version></dependency><dependency><groupId>org.apache.camel</groupId><artifactId>camel-spring</artifactId><version>2.15.2</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>3.0.4</version></dependency>2:写一个接口,用户发布ws
package org.demo.cxf.api;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebService;@WebServicepublic interface IBank{@WebMethod(operationName="getBankName")public String getBankName(@WebParam(name="id") String id);}
3:接口处理类
package org.demo.cxf.api;import org.apache.camel.Exchange;import org.apache.camel.Processor;import org.apache.cxf.message.MessageContentsList;public class ABC implements Processor{public void process(Exchange exchange) throws Exception{MessageContentsList params = exchange.getIn().getBody(MessageContentsList.class);Object id = params.get(0);exchange.getOut().setBody("hello : " + id.toString());}}
4:配置一个SSL的服务器
package org.demo.cxf.api;import java.io.FileInputStream;import java.io.InputStream;import java.security.KeyStore;import javax.net.ssl.KeyManager;import javax.net.ssl.KeyManagerFactory;import org.apache.cxf.configuration.jsse.TLSServerParameters;import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;/** * 配置一个SSL的服务器,占用一个端口 */public class ConfigSSLServer{private String keyStoreFile;private String keyStorePassword;private String keyManagerPassword;private Integer port;public void startServer() throws Exception{TLSServerParameters tlsParams = new TLSServerParameters();tlsParams.setKeyManagers(getKeyManagers());tlsParams.setSecureSocketProtocol("TLS");JettyHTTPServerEngineFactory factory = new JettyHTTPServerEngineFactory();factory.setTLSServerParametersForPort(port, tlsParams);}private KeyManager[] getKeyManagers()throws Exception{if(keyManagerPassword == null){keyManagerPassword = keyStorePassword;}InputStream input = null;try{KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());input = new FileInputStream(keyStoreFile);ks.load(input, keyStorePassword.toCharArray());KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");kmf.init(ks, keyManagerPassword.toCharArray());return kmf.getKeyManagers();}finally{if(input != null){input.close();}}}public String getKeyManagerPassword(){return keyManagerPassword;}public void setKeyManagerPassword(String keyManagerPassword){this.keyManagerPassword = keyManagerPassword;}public String getKeyStoreFile(){return keyStoreFile;}public void setKeyStoreFile(String keyStoreFile){this.keyStoreFile = keyStoreFile;}public String getKeyStorePassword(){return keyStorePassword;}public void setKeyStorePassword(String keyStorePassword){this.keyStorePassword = keyStorePassword;}public Integer getPort(){return port;}public void setPort(Integer port){this.port = port;}}
5:配置spring.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"xmlns:cxf="http://camel.apache.org/schema/cxf"xsi:schemaLocation=" http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 启动一个SSL 服务器 --><bean id="configSSLServer" class="org.demo.cxf.api.ConfigSSLServer" init-method="startServer"><property name="keyStoreFile" value="e:/jks/server.jks"/><property name="keyStorePassword" value="123456"/><property name="port" value="8443"/></bean><!-- 注意这里的8443端口,一定要和上面的SSL服务器的端口保持一致 --><cxf:cxfEndpoint id="bankService" serviceClass="org.demo.cxf.api.IBank" address="https://0.0.0.0:8443/cxf/test"></cxf:cxfEndpoint><bean id="ABC" class="org.demo.cxf.api.ABC" /><camelContext id="cxfCamelContext" xmlns="http://camel.apache.org/schema/spring"><route> <from uri="bankService" /> <to uri="bean:ABC" /> </route></camelContext></beans>
6:启动服务器,看能否访问 https://127.0.0.1:8443/cxf/test?wsdl
7:编写客户端
package org.demo.cxf;import java.io.FileInputStream;import java.io.InputStream;import java.security.KeyStore;import javax.net.ssl.TrustManager;import javax.net.ssl.TrustManagerFactory;import org.apache.cxf.configuration.jsse.TLSClientParameters;import org.apache.cxf.endpoint.Client;import org.apache.cxf.frontend.ClientProxy;import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;import org.apache.cxf.transport.http.HTTPConduit;import org.demo.cxf.api.IBank;public class TestClient{private static String keyStoreFile = "e:/jks/client.jks";private static String keyStorePassword = "123456";static TrustManager[] getTrustManagers()throws Exception{InputStream input = null;try{KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());input = new FileInputStream(keyStoreFile);ks.load(input, keyStorePassword.toCharArray());TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");tmf.init(ks);return tmf.getTrustManagers();}finally{if(input != null){input.close();}}}public static void main(String[] args)throws Exception{JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean(); factoryBean.setAddress("https://127.0.0.1:8443/cxf/test?wsdl");factoryBean.setServiceClass(IBank.class);IBank bank = (IBank)factoryBean.create();Client client = ClientProxy.getClient(bank); HTTPConduit httpConduit = (HTTPConduit)client.getConduit(); TLSClientParameters tlsParams = new TLSClientParameters(); tlsParams.setDisableCNCheck(true); tlsParams.setTrustManagers(getTrustManagers()); httpConduit.setTlsClientParameters(tlsParams); System.out.println(bank.getBankName("101"));}}
7 0
- Apache Camel配置SSL的CXF
- Apache Camel配置SSL的rest
- 配置Apache的SSL
- Apache Camel的Header、Property、Body配置示例
- 基于SSL验证的Apache CXF客户端设计总结
- Apache Camel TypeConverter的使用
- Apache CXF配置
- Apache Camel
- Apache Camel
- Apache的SSL配置(2)
- Windows下配置Apache的SSL服务
- Ubuntu下Apache SSL的配置方法
- wamp下 配置 apache 的ssl
- SVN+Apache+SSL的配置说明
- Apache Ssl 配置整理
- 配置Apache支持SSL
- apache 配置 - ssl
- Apache SSL配置
- Linux系统 Centos7 yum命令在线安装 MySQL5.6
- TextView性能优化
- 什么是智能机
- mysql 使用 记录
- Executors
- Apache Camel配置SSL的CXF
- 数据结构之(3)栈和队列
- java中用枚举类实现单例模式
- ArcGIS JS 版军事标绘图(燕尾箭头、钳击箭头、集结地)扇形等自定义图形
- coderforce 525B. Pasha and String
- mysql启动的四种方式
- POJ 3009 用DFS搜最短路径 适合用来学习DFS
- php-fpm的配置和优化
- 【FOJ2205 11月月赛A】【二分图结论题】据说题目很水 n个点上不形成三元环的最大边数