Alex
Alex

Reputation: 163

Glassfish Jersey + Weld creates AbstractMethodError

I have a web-application based on JDK8, Tomcat7 (V2.1), Jersey (2.35) and CDI-Weld (2.4.8.Final)

Since I am starting tht web container, I receive this exception always twice. These two exceptions will appear then every 5 minutes. I think that any kind of timeout of tomcat?

The first exception will start with ERROR Allocate exception for servlet package.RestApplication

The second one with: ERROR StandardWrapper.Throwable

The following stack in both cases is identical and is shown here:

2022-04-25 13:56:34.3635 [10] INFO  - [] 2022-04-25 13:56:34,369 ERROR StandardWrapper.Throwable   [Jdk14Logger.java:101]
2022-04-25 13:56:34.3635 [10] INFO  - [] java.lang.AbstractMethodError: Method org/glassfish/jersey/gf/cdi/internal/CdiComponentProvider.initialize(Lorg/glassfish/jersey/internal/inject/InjectionManager;)V is abstract
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.gf.cdi.internal.CdiComponentProvider.initialize(CdiComponentProvider.java)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ComponentProviderConfigurator.lambda$null$0(ComponentProviderConfigurator.java:55)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:439)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ComponentProviderConfigurator.lambda$init$1(ComponentProviderConfigurator.java:56)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:317)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ApplicationConfigurator.createApplication(ApplicationConfigurator.java:98)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ApplicationConfigurator.init(ApplicationConfigurator.java:72)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$0(ApplicationHandler.java:294)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.Arrays$ArrayList.forEach(Arrays.java:3880)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:294)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:261)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:311)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:347)
2022-04-25 13:56:34.3635 [10] INFO  - [] at javax.servlet.GenericServlet.init(GenericServlet.java:160)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1091)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5033)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5317)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
2022-04-25 13:56:34.3635 [10] INFO  - [] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
2022-04-25 13:56:34.3635 [10] INFO  - [] at java.lang.Thread.run(Thread.java:748)

For Weld/CDI I have added:

        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-core</artifactId>
            <version>2.4.8.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-spi</artifactId>
            <version>2.4.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.weld</groupId>
            <artifactId>weld-api</artifactId>
            <version>2.4.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet</artifactId>
            <version>2.4.8.Final</version>
        </dependency>

For Jersey I have added:

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.35</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>2.35</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-sse</artifactId>
            <version>2.35</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-sse</artifactId>
            <version>2.35</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
            <version>2.35</version>
        </dependency>

Furthermore these:

        <dependency>
            <groupId>org.glassfish.jersey.containers.glassfish</groupId>
            <artifactId>jersey-gf-cdi</artifactId>
            <version>2.14</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers.glassfish</groupId>
            <artifactId>jersey-gf-ejb</artifactId>
            <version>2.35</version>
        </dependency>

Does anybody see any incompatibility? Can somebody recognized why this exception occurs? Or is there any dependency missing?

Upvotes: 1

Views: 399

Answers (1)

Dmytro Chasovskyi
Dmytro Chasovskyi

Reputation: 3621

There are many ways of solving it.

One the possibilities is to change to BOM and remove all other jersey dependencies

<dependency>
  <groupId>org.glassfish.jersey</groupId>
  <artifactId>jersey-bom</artifactId>
  <version>2.35</version>
  <type>pom</type>
</dependency>

Pros

  • Less dependencies to care about
  • BOM makes "single" very well tailored dependency

Cons:

  • It can blow dependencies significantly in size

Upvotes: 1

Related Questions