cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Schneider (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-5284) CXF clients do not work in Eclipse RCP: Exception says BindingProvider interface not visible
Date Tue, 17 Sep 2013 10:43:51 GMT
Christian Schneider created CXF-5284:
----------------------------------------

             Summary: CXF clients do not work in Eclipse RCP: Exception says BindingProvider
interface not visible
                 Key: CXF-5284
                 URL: https://issues.apache.org/jira/browse/CXF-5284
             Project: CXF
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.7.7
            Reporter: Christian Schneider
             Fix For: 3.0.0, 2.7.8


When using CXF in Eclipse RCP there is there is a problem with CXF clients.

When CXF creates the proxy using the ProxyHelper class it fails with the message that BindingProvider
interface is not visible.

In fact the BindingProvider interface is visible but the class created in ProxyHelper is not
the same as the class BindingProvider.class given to the ProxyHelper.

I was not able to reproduce the error outside of Eclipse RCP. I also tested with an extended
DOSGi distro on pure Equinox without karaf. There like in Karaf the error did not happen.

We made sure that the package javax.xml.ws is only exported once and that it is the version
from servicemix bundles.

When the error happens it seems that the incorrect BindingProvider.class is loaded by classloader
null (the bootstrap classloader). So it seems on RCP the BindingProvider interface is also
coming from the bootstrap classloader under these circumstances ... no idea why.

In any case until recently we were able to work around the issue by importing the package
javax.xml.ws in the bundle containing the service interface. This made sure that the classloader
of this bundle was able to see the class and could be used on its own. 
Without the import the package was not visible to the bundle classloader of the user bundle
and a proxy class loader was used and the problem occured.

So I see two things we can do:
1. Undo the change to move BindingProvider.class to the front of the interfaces in the call
to ProxyHelper. This does not fully solve the problem but will enable the workaround again.
2. Find the root problem which might be in equinox or even in the rcp code.

In general it would also be great if we could avoid to create a proxy with interfaces that
are invisible to the bundle but I am not sure if this can be done at all.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message