Christian Schneider created CXF-5228:
----------------------------------------

             Summary: Rest client reports interface not visible for service 
interface
                 Key: CXF-5228
                 URL: https://issues.apache.org/jira/browse/CXF-5228
             Project: CXF
          Issue Type: Bug
          Components: JAX-RS
    Affects Versions: 2.7.6
         Environment: OSGi
            Reporter: Christian Schneider
            Assignee: Christian Schneider
             Fix For: 3.0.0, 2.7.7


When using a rest client in blueprint in OSGi I get the following stacktrace:
Caused by: java.lang.IllegalArgumentException: interface 
net.lr.tutorial.karaf.cxf.personservice.person.PersonService is not visible 
from class loader

See this for the full trace:
https://gist.github.com/cschneider/6156833

I debugged into it and found that the true execption is hidden.
It happens in 
org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.createWithValues(Object...)

There is first tries to create the proxy using the classloader of the service 
interface. 

This fails as in the user classloader there is only the service interface but 
the proxy is also create for the cxf Client interface. So it fails when 
resolving cxf Client.

This exception is swallowed and the context classloader is used to create the 
proxy. This classloader is not set so it reports the user service interface is 
not visible. This is not the root of the problem though.

I fixed this by using a ProxyClassloader that contains the user classloader and 
the classloader of the JAXRSClientFactoryBean. So it then finds user classes as 
well as cxf classes.




--
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