Uploaded image for project: 'TomEE'
  1. TomEE
  2. TOMEE-1681

Upgrade '<cxf.version>' property in openejb.pom to 3.1.3

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Trivial
    • Resolution: Invalid
    • 7.0.0-M1
    • 7.0.0-M2
    • TomEE Core Server
    • MacOS 10.11.2, Linux (Ubuntu 14.04LTS) - Maven 3.2.5 and 3.3.9, JUnit 4.12 in RS-based webservice test setup with "WebClient" to simulate client access.
    • Important

    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?

      Attachments

        Activity

          People

            Unassigned Unassigned
            mawiesne Martin Wiesner
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: