[ https://issues.apache.org/jira/browse/CXF-3949?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184084#comment-13184084 ]
metatech commented on CXF-3949: ------------------------------- I found 2 workarounds to make it work with ServiceMix 4.3 (which includes component "specs-1.7.0") : 1. osgi:bundle-level <ID of org.apache.servicemix.specs.jsr311-api-1.1> 50 2. osgi:bundle-level <ID of application using CXF> 80 #for *all* applications using CXF > 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 > 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