[
https://issues.apache.org/jira/browse/CXF-3949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved CXF-3949.
-----------------------------------
Resolution: Fixed
Fix Version/s: 2.7.0
2.6.2
2.5.5
2.4.9
Assignee: Sergey Beryozkin
> NoClassDefFoundError when using CXF JAX-RS in OSGi environment
> --------------------------------------------------------------
>
> Key: CXF-3949
> URL: https://issues.apache.org/jira/browse/CXF-3949
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 2.3.2
> Environment: ServiceMix 4.3
> Reporter: metatech
> Assignee: Sergey Beryozkin
> Fix For: 2.4.9, 2.5.5, 2.6.2, 2.7.0
>
> Original Estimate: 8h
> Remaining Estimate: 8h
>
> When using the CXF JAX-RS implementation in an OSGi environment, the CXF
> implementation might fail to initialize properly.
> The problem is non-consistently reproduceable, but more likely to occur on
> machines with high parallelism (due to several cores/threads).
> The CXF bundle ("org.apache.cxf.bundle") has a dependency on the JSR 311 API
> JAR ("org.apache.servicemix.specs.jsr311-api-1.1").
> But the dependency is marked as "resolution=optional" in the OSGi headers of
> the CXF bundle manifest.
> As a result, if the JSR-311 bundle is not yet fully started when the CXF
> bundle is started, OSGi does not "wire" these packages into the imports of
> the CXF bundle:
> javax.ws.rs
> javax.ws.rs.core
> javax.ws.rs.ext
> The error is the following :
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.cxf.jaxrs.utils.JAXRSUtils
> See similar error DOSGI-1
> I guess that these packages are marked as optional because CXF can be used in
> an environment where no JAX-RS is available, and it works fine as long as the
> application does not use this API. However, when an application is known to
> use the API, the dependency marked as "optional" is not correct.
> Long-term solution : split CXF bundle into smaller bundles (like Jetty).
> Workaround : edit the manifest of the CXF bundle, and remove the
> "resolution=optional" for the packages which are known to be used by the
> application. Tip : replace "resolution" by "resolutio2", this tricks
> prevents from changing the alignment of the 80-characters columns.
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira