[ 
http://jira.codehaus.org/browse/XFIRE-1125?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jorg Heymans updated XFIRE-1125:
--------------------------------

    Attachment: patch.tar

This patch forces Resolver and ObjectServiceFactory to use commons-http instead 
of url.openStream(). This makes it possible to register custom protocol 
handlers for commons-http as described in the documentation 
(http://xfire.codehaus.org/HTTP+Transport)

e.g.
[code]
        Protocol authhttps = new Protocol("https", new 
AuthSSLProtocolSocketFactory(new URL(
                "file:/c:/ClientIdentityStore.jks"), "mykeypass", new 
URL("file:/c:/TrustServer.jks"), "mykeypass"), 22222);
        Protocol.registerProtocol("https", authhttps);
[/code]

> XFireClientFactoryBean should use commons-httpclient for SSL requests
> ---------------------------------------------------------------------
>
>                 Key: XFIRE-1125
>                 URL: http://jira.codehaus.org/browse/XFIRE-1125
>             Project: XFire
>          Issue Type: Bug
>          Components: Spring
>    Affects Versions: 1.2.6
>         Environment: spring 2.5.4, tomcat 6.0.10, java 1.6, windows xp
>            Reporter: Ilya Boyandin
>            Assignee: Dan Diephouse
>         Attachments: patch.tar
>
>
> XFireClientFactoryBean attempts to use the buggy URL class for establishing 
> connection over SSL even when commons-https is available. This contradicts 
> the documentation (http://xfire.codehaus.org/HTTP+Transport).
> I get the following exception:
> javax.net.ssl.SSLHandshakeException: Remote host closed connection during 
> handshake
>       at 
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:808)
>       at 
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096)
>       at 
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123)
>       at 
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107)
>       at 
> sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:405)
>       at 
> sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
>       at 
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:977)
>       at 
> sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
>       at java.net.URL.openStream(URL.java:1009)
>       at org.codehaus.xfire.util.Resolver.tryFileSystem(Resolver.java:83)
>       at org.codehaus.xfire.util.Resolver.<init>(Resolver.java:47)
>       at org.codehaus.xfire.util.Resolver.<init>(Resolver.java:35)
>       at 
> org.codehaus.xfire.spring.remoting.XFireClientFactoryBean.makeClient(XFireClientFactoryBean.java:496)
>       at 
> org.codehaus.xfire.spring.remoting.XFireClientFactoryBean.createClient(XFireClientFactoryBean.java:412)
>       at 
> org.codehaus.xfire.spring.remoting.XFireClientFactoryBean.access$100(XFireClientFactoryBean.java:54)
>       at 
> org.codehaus.xfire.spring.remoting.XFireClientFactoryBean$ProxyInterceptor.getClient(XFireClientFactoryBean.java:640)
>       at 
> org.codehaus.xfire.spring.remoting.XFireClientFactoryBean$ProxyInterceptor.invoke(XFireClientFactoryBean.java:601)
>       at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
>       at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
>       ... 34 more
> Caused by: java.io.EOFException: SSL peer shut down incorrectly
>       at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:333)
>       at 
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:789)
>       ... 52 more
> With the following client code:
> private XFireClientFactoryBean authWebService;
> ...
> ProtocolSocketFactory easy = new EasySSLProtocolSocketFactory();
> Protocol protocol = new Protocol("https", easy, 8443);
> Protocol.registerProtocol("https", protocol);
> RemoteAuthService auth = (RemoteAuthService)authWebService.getObject();
> auth.authenticateBySsoAuthCode("test");
> The commons-httpclient and commons-codec jars are in the classpath.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to