cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <ning.ji...@iona.com>
Subject Re: [jira] Commented: (CXF-955) Implicit dependency from jaxws:endpoint on httpj:engine-factory is not encoded in Spring
Date Thu, 06 Sep 2007 02:19:57 GMT
I just went through the patch, we still need to add the same support for 
the jaxws:server and simple:server, I will work on it :)
Because it just work for the CXF server side, specially the Jetty 
engine. I don't think it also relates to the client side.

Willem.
Daniel Kulp (JIRA) wrote:
>     [ https://issues.apache.org/jira/browse/CXF-955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12525274
] 
>
> Daniel Kulp commented on CXF-955:
> ---------------------------------
>
>
> Fred: do you know if this also needs to be done for jaxws:server and simple:server or
the clients?
>
>
>
>   
>> Implicit dependency from jaxws:endpoint on httpj:engine-factory is not encoded in
Spring
>> ----------------------------------------------------------------------------------------
>>
>>                 Key: CXF-955
>>                 URL: https://issues.apache.org/jira/browse/CXF-955
>>             Project: CXF
>>          Issue Type: Bug
>>            Reporter: Fred Dushin
>>         Attachments: cxf-955.patch
>>
>>
>> Suppose an application spring-loads a jaxws:endpoint, as in:
>> {{{
>> <jaxws:endpoint 
>>         id="HttpsEndpoint"
>>         implementor="org.apache.cxf.systest.https.GreeterImpl"
>>         address="https://localhost:9001/SoapContext/SoapPort"
>>         serviceName="s:SOAPService"
>>         endpointName="e:SoapPort"
>>         xmlns:e="http://apache.org/hello_world"
>>         xmlns:s="http://apache.org/hello_world"/>
>> }}}
>> (IMPORTANT: Note the https protocol)
>> And suppose further the application tries to define the TLS parameters for servicing
listing on the IP port 9001, as follows:
>> {{{
>>     <httpj:engine-factory bus="cxf" id="foo">
>>         <!-- -->
>>         <!-- https://localhost:9001/... -->
>>         <!-- -->
>>         <httpj:engine port="9001">
>>             <httpj:tlsServerParameters>
>>                 <sec:keyManagers keyPassword="password">
>>                     <sec:keyStore type="jks" resource="keys/server.jks" password="password"/>
>>                 </sec:keyManagers>
>>                 <sec:trustManagers>
>>                     <sec:keyStore type="jks" resource="keys/truststore.jks"/>
>>                 </sec:trustManagers>
>>                 <sec:clientAuthentication want="true" required="true"/>
>>             </httpj:tlsServerParameters>
>>         </httpj:engine>
>> }}}
>> What will happen is that jaxws:endpoint will get instantiated before the httpj:engine-factory
(at least on the JVM I am using).  This will cause the implicit endpoint.publish to fail,
because at the time the publish occurs, there are no TLS settings established with the Bus
for that physical port.
>> The error you will typically see is:
>> {{{
>> Caused by: java.io.IOException: Protocol mismatch: engine's protocol is http, the
url protocol is https
>> }}}
>> We need to define an implicit (or explicit) Spring dependency between these beans.
>> A simple Spring "depends-on" would work, but both elements are custom XML spring
beans, so schema needs to be modified, and the beans themselves need the DependsOn bean attribute,
at a minimum.  Additional work may be needed to inform Spring of the actual dependency, so
that it Does the Right Thing (r), and instantiates the httpj:engine-factory before the jaxws:endpoint.
>> I have a test case for this, which I will provide a patch for shortly (if I can't
figure out how to fix the issue).
>>     
>
>   

Mime
View raw message