<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>绿色记忆 &#187; CXF</title>
	<atom:link href="https://blog.gmem.cc/tag/cxf/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.gmem.cc</link>
	<description></description>
	<lastBuildDate>Fri, 03 Apr 2026 04:13:36 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.14</generator>
	<item>
		<title>CXF带SSL支持的客户端示例</title>
		<link>https://blog.gmem.cc/cxf-client-with-ssl</link>
		<comments>https://blog.gmem.cc/cxf-client-with-ssl#comments</comments>
		<pubDate>Sun, 23 Dec 2012 03:14:09 +0000</pubDate>
		<dc:creator><![CDATA[Alex]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[WebService]]></category>

		<guid isPermaLink="false">http://blog.gmem.cc/?p=1495</guid>
		<description><![CDATA[<p>WebService接口定义 基于JAX-WS定义的接口： [crayon-69d04afa8d8d7383027578/] SSL客户端示例 [crayon-69d04afa8d8dd412462725/]</p>
<p>The post <a rel="nofollow" href="https://blog.gmem.cc/cxf-client-with-ssl">CXF带SSL支持的客户端示例</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="wri_content_clear_both"><div class="blog_h3"><span class="graybg">WebService接口定义</span></div>
<p>基于JAX-WS定义的接口：</p>
<pre class="crayon-plain-tag">@WebService
public interface DataTransService
{

    @WebMethod ( operationName = "sendXML" )
    @WebResult ( name = "response" )
    String sendXML(
            @WebParam ( name = "userName" ) String userName,
            @WebParam ( name = "password" ) String password,
            @WebParam ( name = "msg" ) String msg );

}</pre>
<div class="blog_h3"><span class="graybg">SSL客户端示例</span></div>
<pre class="crayon-plain-tag">public void send(String username,String password,String xml) {
    String address = "https://127.0.0.1:5051/dataTransService";
    JaxWsProxyFactoryBean proxyFactory = new JaxWsProxyFactoryBean();
    proxyFactory.setServiceClass( DataTransService.class );
    proxyFactory.setAddress( address );
    DataTransService service = (DataTransService) proxyFactory.create();
    org.apache.cxf.endpoint.Client client = ClientProxy.getClient( service );


    HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
    TLSClientParameters tlsParams = initTLSClientParameters();

    httpConduit.setTlsClientParameters( tlsParams );

    service.sendXML( username, password,xml);
}

private TLSClientParameters initTLSClientParameters() throws
    KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, UnrecoverableKeyException
{
    TLSClientParameters tlsParams = new TLSClientParameters();
    tlsParams.setDisableCNCheck( true );
    CanaryConfig cfg = getCanaryConfig();
    {
        KeyStore trustKeyStore = KeyStore.getInstance( cfg.getString( "https.trustManagers.keyStore.type" ) );
        String trustKeyStorePassword = cfg.getString( "https.trustManagers.keyStore.password" );
        String url = cfg.getString( "https.trustManagers.keyStore.url" );
        File trustKeyStoreFile = CanaryHelper.urlToFile( url );
        trustKeyStore.load( new FileInputStream( trustKeyStoreFile ), trustKeyStorePassword.toCharArray() );
        TrustManagerFactory trustFactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm() );
        trustFactory.init( trustKeyStore );
        TrustManager[] tm = trustFactory.getTrustManagers();
        tlsParams.setTrustManagers( tm );
    }
    {
        KeyStore priKeyStore = KeyStore.getInstance( cfg.getString( "https.keyManagers.keyStore.type" ) );
        String priKeyStorePassword = cfg.getString( "https.keyManagers.keyStore.password" );
        String url = cfg.getString( "https.keyManagers.keyStore.url" );
        File priKeyStoreFile = CanaryHelper.urlToFile( url );
        priKeyStore.load( new FileInputStream( priKeyStoreFile ), priKeyStorePassword.toCharArray() );
        KeyManagerFactory keyFactory = KeyManagerFactory.getInstance( KeyManagerFactory.getDefaultAlgorithm() );
        keyFactory.init( priKeyStore, cfg.getString( "https.keyManagers.keyPassword" ).toCharArray() );
        KeyManager[] km = keyFactory.getKeyManagers();
        tlsParams.setKeyManagers( km );
    }
    {
        FiltersType filter = new FiltersType();
        filter.getInclude().add( ".*_EXPORT_.*" );
        filter.getInclude().add( ".*_EXPORT1024_.*" );
        filter.getInclude().add( ".*_WITH_DES_.*" );
        filter.getInclude().add( ".*_WITH_NULL_.*" );
        filter.getExclude().add( ".*_DH_anon_.*" );
        tlsParams.setCipherSuitesFilter( filter );
    }
    return tlsParams;
}</pre>
</div><p>The post <a rel="nofollow" href="https://blog.gmem.cc/cxf-client-with-ssl">CXF带SSL支持的客户端示例</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.gmem.cc/cxf-client-with-ssl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring配置：启用Jetty SSL传输的CXF</title>
		<link>https://blog.gmem.cc/spring-confg-cxf-with-ssl</link>
		<comments>https://blog.gmem.cc/spring-confg-cxf-with-ssl#comments</comments>
		<pubDate>Sat, 22 Dec 2012 10:34:51 +0000</pubDate>
		<dc:creator><![CDATA[Alex]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[CXF]]></category>
		<category><![CDATA[Jetty]]></category>
		<category><![CDATA[JKS]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[WebService]]></category>

		<guid isPermaLink="false">http://blog.gmem.cc/?p=1144</guid>
		<description><![CDATA[<p>Spring配置文件 [crayon-69d04afa8dde8070155465/] 使用JDK的keytool密钥对 使用JDK自带的keytool命令可以生成JKS（Java KeyStore）文件，作为数字证书库使用。在配置SSL时，一般需要用到两个JKS：信任库、证书库（对应上节配置文件中的truststore、keystore）。 下面是生成证书库的示例： [crayon-69d04afa8ddf1446777809/]</p>
<p>The post <a rel="nofollow" href="https://blog.gmem.cc/spring-confg-cxf-with-ssl">Spring配置：启用Jetty SSL传输的CXF</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="wri_content_clear_both"><div class="blog_h3"><span class="graybg">Spring配置文件</span></div>
<pre class="crayon-plain-tag">&lt;beans 
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sec="http://cxf.apache.org/configuration/security"
    xmlns:http="http://cxf.apache.org/transports/http/configuration"
    xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"
    xmlns:cxf="http://cxf.apache.org/core"
    xmlns:jaxws="http://cxf.apache.org/jaxws"

    xsi:schemaLocation="
        http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
        http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
        http://cxf.apache.org/transports/http-jetty/configuration http://cxf.apache.org/schemas/configuration/http-jetty.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd "&gt;

    &lt;import resource="classpath:META-INF/cxf/cxf.xml" /&gt;
    &lt;import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml" /&gt;

    &lt;cxf:bus&gt;
        &lt;cxf:features&gt;
            &lt;cxf:logging /&gt;
        &lt;/cxf:features&gt;
    &lt;/cxf:bus&gt;
    &lt;bean id="cfg" class="sparknet.canary.core.cfg" init-method="init"&gt;
        &lt;property name="params"&gt;
            &lt;value&gt;
            &lt;![CDATA[
                http.port=5050
                https.port=5051
                https.keyManagers.keyStore.type=JKS
                https.keyManagers.keyPassword=sparknet
                https.keyManagers.keyStore.password=sparknet
                https.keyManagers.keyStore.url=#{@cfg.baseDirUrl}/work/security/key/platform.jks
                https.trustManagers.keyStore.type=JKS
                https.trustManagers.keyStore.password=sparknet
                https.trustManagers.keyStore.url=#{@cfg.baseDirUrl}/work/security/cert/trust.jks
                http.minThreads=5
                http.maxThreads=50
            ]]&gt;
            &lt;/value&gt;
        &lt;/property&gt;
    &lt;/bean&gt;
    &lt;bean name="dataTransServiceImplHttp" class="cc.gmem.demo.ws.DataTransServiceImpl" autowire="byName"&gt;
        &lt;property name="https" value="false" /&gt;
    &lt;/bean&gt;
    &lt;bean name="dataTransServiceImplHttps" class="cc.gmem.demo.ws.DataTransServiceImpl" autowire="byName"&gt;
        &lt;property name="https" value="true" /&gt;
    &lt;/bean&gt;
    &lt;jaxws:endpoint id="dataTransServiceHttp" implementor="#dataTransServiceImplHttp" address="http://0.0.0.0:#{@cfg.params['http.port']}/dataTransService" publish="true" /&gt;
    &lt;jaxws:endpoint id="dataTransServiceHttps" implementor="#dataTransServiceImplHttps" address="https://0.0.0.0:#{@cfg.params['https.port']}/dataTransService" publish="true" /&gt;

    &lt;httpj:engine-factory bus="cxf"&gt;

        &lt;httpj:identifiedThreadingParameters id="threadPool"&gt;
            &lt;httpj:threadingParameters minThreads="#{@cfg.params['http.minThreads']}" maxThreads="#{@cfg.params['http.maxThreads']}" /&gt;
        &lt;/httpj:identifiedThreadingParameters&gt;

        &lt;httpj:engine port="#{@cfg.params['http.port']}"&gt;
            &lt;httpj:threadingParametersRef id="threadPool" /&gt;
            &lt;httpj:connector&gt;
                &lt;bean class="org.eclipse.jetty.server.bio.SocketConnector"&gt;
                    &lt;property name="port" value="#{@cfg.params['http.port']}" /&gt;
                &lt;/bean&gt;
            &lt;/httpj:connector&gt;
        &lt;/httpj:engine&gt;
        &lt;httpj:engine port="#{@cfg.params['https.port']}"&gt;
            &lt;httpj:tlsServerParameters&gt;
                &lt;sec:keyManagers keyPassword="#{@cfg.params['https.keyManagers.keyPassword']}"&gt;
                    &lt;sec:keyStore type="#{@cfg.params['https.keyManagers.keyStore.type']}" url="#{@cfg.params['https.keyManagers.keyStore.url']}" password="#{@cfg.params['https.keyManagers.keyStore.password']}" /&gt;
                &lt;/sec:keyManagers&gt;
                &lt;sec:trustManagers&gt;
                    &lt;sec:keyStore type="#{@cfg.params['https.trustManagers.keyStore.type']}" url="#{@cfg.params['https.trustManagers.keyStore.url']}" password="#{@cfg.params['https.trustManagers.keyStore.password']}" /&gt;
                &lt;/sec:trustManagers&gt;
                &lt;sec:cipherSuitesFilter&gt;
                    &lt;sec:include&gt;.*_EXPORT_.*&lt;/sec:include&gt;
                    &lt;sec:include&gt;.*_EXPORT1024_.*&lt;/sec:include&gt;
                    &lt;sec:include&gt;.*_WITH_DES_.*&lt;/sec:include&gt;
                    &lt;sec:include&gt;.*_WITH_AES_.*&lt;/sec:include&gt;
                    &lt;sec:include&gt;.*_WITH_NULL_.*&lt;/sec:include&gt;
                    &lt;sec:exclude&gt;.*_DH_anon_.*&lt;/sec:exclude&gt;
                &lt;/sec:cipherSuitesFilter&gt;
                &lt;sec:clientAuthentication want="true" required="true" /&gt;
            &lt;/httpj:tlsServerParameters&gt;
            &lt;httpj:threadingParametersRef id="threadPool" /&gt;
            &lt;httpj:connector&gt;
                &lt;bean class="org.eclipse.jetty.server.ssl.SslSocketConnector"&gt;
                    &lt;property name="port" value="#{@cfg.params['https.port']}" /&gt;
                    &lt;property name="password" value="#{@cfg.params['https.keyManagers.keyStore.password']}" /&gt;
                    &lt;property name="trustPassword" value="#{@cfg.params['https.trustManagers.keyStore.password']}" /&gt;
                    &lt;property name="keyPassword" value="#{@cfg.params['https.keyManagers.keyPassword']}" /&gt;
                    &lt;property name="protocol" value="TLS" /&gt;
                    &lt;property name="keystore" value="#{@cfg.params['https.keyManagers.keyStore.url']}" /&gt;
                    &lt;property name="keystoreType" value="#{@cfg.params['https.keyManagers.keyStore.type']}" /&gt;
                    &lt;property name="truststore" value="#{@cfg.params['https.trustManagers.keyStore.url']}" /&gt;
                    &lt;property name="truststoreType" value="#{@cfg.params['https.trustManagers.keyStore.type']}" /&gt;
                    &lt;property name="wantClientAuth" value="false" /&gt;
                    &lt;property name="needClientAuth" value="false" /&gt;
                &lt;/bean&gt;
            &lt;/httpj:connector&gt;
        &lt;/httpj:engine&gt;
    &lt;/httpj:engine-factory&gt;
&lt;/beans&gt;</pre>
<div class="blog_h3"><span class="graybg">使用JDK的keytool密钥对</span></div>
<p>使用JDK自带的keytool命令可以生成JKS（Java KeyStore）文件，作为数字证书库使用。在配置SSL时，一般需要用到两个JKS：信任库、证书库（对应上节配置文件中的truststore、keystore）。<br /> 下面是生成证书库的示例：</p>
<pre class="crayon-plain-tag">keytool -genkey -alias platform -keyalg RSA -keypass key_password -storepass store_password -dname "CN=DataTrans Platform, OU=, O=Gmem.cc, L=Nan Jing, ST=Jiang Su, C=CN" -validity 3650 -keystore platform.jks</pre>
</div><p>The post <a rel="nofollow" href="https://blog.gmem.cc/spring-confg-cxf-with-ssl">Spring配置：启用Jetty SSL传输的CXF</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.gmem.cc/spring-confg-cxf-with-ssl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
