Hi Glen,
Thanks for your reply.  There are two http:engine instances in my config and 
those two elements are definitely wrapped by the http:engine-factory.  Thanks 
for the link, it agrees with the page on CXF's site 
http://cxf.apache.org/docs/standalone-http-transport.html which also doesn't 
show any httpj:Connector element.  Guess I just started from a bad example 
somewhere and assumed it worked.  Should have tried those other examples before 
posting...

Thanks,
Jesse

-----Original Message-----
From: Glen Mazza [mailto:[email protected]] 
Sent: Wednesday, July 27, 2011 3:57 AM
To: [email protected]
Subject: Re: SSL engine starting problem

Googling on "httpj:tlsServerParameters" brought 
http://aruld.info/programming-ssl-for-jetty-based-cxf-services/ 
(although it's 3 years old, it may still be accurate.)  That term also 
brings up other hits.  What I can immediately see is that your 
configuration does not wrap httpj:engine with httpj:engine-factory, 
although I'm unsure if that's required.

Glen

On 07/26/2011 06:02 PM, Jesse Pangburn wrote:
> Hi,
> Any advice on the httj:engine using SSL problem below?
>
> Thank you,
> Jesse
>
> -----Original Message-----
> From: Jesse Pangburn [mailto:[email protected]]
> Sent: Wednesday, July 20, 2011 5:55 PM
> To: [email protected]
> Subject: SSL engine starting problem
>
> Hi,
> I'm new to CXF so please forgive these noob questions.  I'm running CXF 
> embedded in a Spring app and have a couple problems.  The following is the 
> content of my spring config xml:
> <beans xmlns="http://www.springframework.org/schema/beans";
>       xmlns:beans="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:jaxws="http://cxf.apache.org/jaxws"; 
> xmlns:cxf="http://cxf.apache.org/core";
>       xmlns:soap="http://cxf.apache.org/bindings/soap";
>       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/jaxws 
> http://cxf.apache.org/schemas/jaxws.xsd
>              http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>              http://cxf.apache.org/bindings/soap 
> http://cxf.apache.org/schemas/configuration/soap.xsd";>
>
>       <import resource="classpath:META-INF/cxf/cxf.xml" />
>       <import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml" />
>
>       <jaxws:endpoint id="restfulGreeting"
>               implementor="com.infor.cloverleaf.ib.RestfulGreetingProvider"   
>         
>               bindingUri="http://www.w3.org/2004/08/wsdl/http";
>               address="http://localhost:9001/RestfulGreeting"; />
>
>       <httpj:engine-factory bus="cxf" id="engineFactory">
>
>               <httpj:engine port="9001">
>                       <httpj:threadingParameters minThreads="6"
>                               maxThreads="16" />
>               </httpj:engine>
>
>               <httpj:engine port="9002">
>                       <httpj:tlsServerParameters>
>                               <sec:keyManagers keyPassword="changeit">
>                                       <sec:keyStore type="JKS" 
> password="changeit"
>                                               
> file="/home/jpangburn/certs/server-keystore.jks" />
>                               </sec:keyManagers>
>                               <sec:trustManagers>
>                                       <sec:keyStore type="JKS" 
> password="changeit"
>                                               
> file="/home/jpangburn/certs/server-truststore.jks" />
>                               </sec:trustManagers>
>                               <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>
>                       </httpj:tlsServerParameters>
>                       <httpj:threadingParameters minThreads="5"
>                               maxThreads="15" />
>                       <httpj:connector>
>                               <beans:bean 
> class="org.eclipse.jetty.server.ssl.SslSocketConnector">
>                                       <beans:property name="port" 
> value="9002" />
>                               </beans:bean>
>                       </httpj:connector>
>                       <httpj:handlers>
>                               <beans:bean 
> class="org.eclipse.jetty.server.handler.DefaultHandler" />
>                       </httpj:handlers>
>                       <httpj:sessionSupport>true</httpj:sessionSupport>
>               </httpj:engine>
>       </httpj:engine-factory>
> </beans>
>
> This file is loaded by the following code:
> ApplicationContext context = new ClassPathXmlApplicationContext(new String[] 
> {"/com/infor/cloverleaf/ib/IBApplicationContext.xml"});
> // this line is just for debugging, not needed otherwise
> Object factory = context.getBean("engineFactory");
>
> With the address in my restful endpoint like this 
> 'address="http://localhost:9001/RestfulGreeting";' I have no problems.  I can 
> connect to the service and in the debugger when I look at the factory 
> object's portMap field I find that the 9001 port has maxThreads=16 and 
> minThreads=6, so I know that it's using the httpj:engine settings for that 
> port.
>
> Problem #1 is if I change the address to 
> 'address="https://localhost:9002/RestfulGreeting";' to use SSL then I get an 
> error on startup.  It says this:
> WARNING: FAILED org.eclipse.jetty.http.ssl.SslContextFactory@73b879: 
> java.io.FileNotFoundException: /home/jpangburn/.keystore (No such file or 
> directory)
>
> So since it's looking for /home/jpangburn/.keystore (the default) instead of 
> /home/jpangburn/certs/server-keystore.jks as I have configured for port 9002, 
> it's clear that it's ignoring my configuration for that port.  I know it's 
> reading the configuration for the HTTP port, so why not the HTTPS port?
>
> The problem #2 is probably just my own misunderstanding, but I see some 
> examples where the address doesn't have the host:port but can't get it to 
> work.  If I set 'address="/RestfulGreeting"' it does not seem to start the 
> jetty engine and netstat shows the port is not listening.  I would have 
> thought that it would try to listen on each engine instance (port 9001 and 
> 9002 in my case) when you didn't specify the host port.  Instead it says the 
> following but doesn't open any ports:
> INFO: Setting the server's publish address to be /RestfulGreeting
>
> Thanks for your help!
> Jesse
>
>
>


-- 
Glen Mazza
Application Integration Division
Talend (http://www.talend.com/ai)
blog: http://www.jroller.com/gmazza




Reply via email to