Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5228

Rest client reports interface not visible for service interface

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.7.6
    • 2.7.7, 3.0.0-milestone1
    • JAX-RS
    • None
    • OSGi

    • Unknown

    Description

      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.

      Attachments

        Activity

          People

            cschneider Christian Schneider
            cschneider Christian Schneider
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: