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

Reply via email to