Details
Description
According to the latest artifact
<groupId>org.apache.tomee</groupId>
<artifactId>openejb</artifactId>
in 7.0.0-M1, the version of CXF is defined as <cxf.version>3.1.0</cxf.version>.
This, however, conflicts with the bundled CXF version of the released TomEE 7.0.0-M1 bundles (tar.gz/zip) as provided on TomEE's project website. In the provided archives we find CXF artifacts in version 3.1.3 (which is what we would consider correct).
This inconsistency brings in some trouble with other/related artifacts as well. If one tries to manage this dependency actively in its own project from 3.1.0 to 3.1.3 several runtime incompatibilities are observed as follows:
java.lang.IllegalStateException: java.lang.NoSuchMethodException: org.apache.cxf.jaxrs.client.ClientProviderFactory.<init>(org.apache.cxf.jaxrs.provider.ProviderFactory, org.apache.cxf.Bus)
at org.apache.openejb.server.cxf.rs.CxfRSService.initCxfClientBuilderProviders(CxfRSService.java:254)
at org.apache.openejb.server.cxf.rs.CxfRSService.init(CxfRSService.java:193)
at org.apache.openejb.server.ServiceManager.initServer(ServiceManager.java:165)
at org.apache.openejb.server.ServiceManager.initServers(ServiceManager.java:90)
at org.apache.openejb.server.SimpleServiceManager.init(SimpleServiceManager.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.openejb.util.ServiceManagerProxy.invoke(ServiceManagerProxy.java:83)
at org.apache.openejb.util.ServiceManagerProxy.<init>(ServiceManagerProxy.java:69)
at org.apache.openejb.util.ServiceManagerProxy.<init>(ServiceManagerProxy.java:43)
at org.apache.openejb.OpenEjbContainer.startNetworkServices(OpenEjbContainer.java:204)
at org.apache.openejb.OpenEjbContainer.<init>(OpenEjbContainer.java:133)
at org.apache.openejb.OpenEjbContainer.<init>(OpenEjbContainer.java:90)
at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:346)
at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56)
at org.apache.openejb.junit.jee.statement.StartingStatement.before(StartingStatement.java:96)
at org.apache.openejb.junit.jee.statement.DecoratingStatement.evaluate(DecoratingStatement.java:30)
at org.apache.openejb.junit.jee.statement.DecoratingStatement.evaluate(DecoratingStatement.java:32)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.NoSuchMethodException: org.apache.cxf.jaxrs.client.ClientProviderFactory.<init>(org.apache.cxf.jaxrs.provider.ProviderFactory, org.apache.cxf.Bus)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.apache.openejb.server.cxf.rs.CxfRSService.initCxfClientBuilderProviders(CxfRSService.java:204)
This result from a change in a constructor which is no longer existent in CXF 3.1.3, but was present in 3.1.0 and 3.1.1. Sadly, it is quite hard to get our JUnit test running (simulate JAX-RS client via "WebClient" class). It blocks and fails, as the server part can not bind the JAX-RS http server component correctly.
Any ideas?