* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.. - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть веб-приложение, работающее в контейнере TomEE. Веб-приложение развернуто как файл войны. В моем веб-приложении я хочу использовать библиотеки oop -client и oop -common для вызова API для сохранения / удаления файлов в HDFS. Плагин maven-war упаковывает транзитивные зависимости имел oop -коммон и имел oop -клиент в WEB-INF / lib. Теперь при развертывании веб-приложения я получаю исключение ниже.

Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is more than one Bean with type javax.servlet.http.HttpServletRequestQualifiers: [@javax.ws.rs.core.Context()]
for injection into Field Injection Point, field name :  httpServletRequest, Bean Owner : [HolistixRS, WebBeansType:MANAGED, Name:null, API Types:[com.xxxxx.xxxxx.web.HolistixRS,java.lang.Object,com.xxxxx.xxxxx.dataaccess.PortalDBConnectionFactory], Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
found beans:
Bean1, WebBeansType:THIRDPARTY, Name:null, API Types:[javax.servlet.http.HttpServletRequest], Qualifiers:[javax.ws.rs.core.Context,javax.enterprise.inject.Any] from unknown path
HttpServletRequest, WebBeansType:THIRDPARTY, Name:null, API Types:[java.lang.Object,javax.servlet.http.HttpServletRequest], Qualifiers:[javax.ws.rs.core.Context,javax.enterprise.inject.Any] from jar:file:/usr/local/tomee/lib/servlet-api.jar!/javax/servlet/http/HttpServletRequest.class
        at org.apache.webbeans.util.InjectionExceptionUtil.throwAmbiguousResolutionExceptionForBeans(InjectionExceptionUtil.java:108) ~[openwebbeans-impl-1.7.5.jar:1.7.5]
        at org.apache.webbeans.util.InjectionExceptionUtil.throwAmbiguousResolutionException(InjectionExceptionUtil.java:98) ~[openwebbeans-impl-1.7.5.jar:1.7.5]
        at org.apache.webbeans.container.InjectionResolver.resolve(InjectionResolver.java:696) ~[openwebbeans-impl-1.7.5.jar:1.7.5]
        at org.apache.webbeans.container.InjectionResolver.checkInjectionPointType(InjectionResolver.java:160) ~[openwebbeans-impl-1.7.5.jar:1.7.5]
        at org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1192) ~[openwebbeans-impl-1.7.5.jar:1.7.52020-04-07 16:47:25.715 [localhost-startStop-1] INFO  org.apache.catalina.startup.HostConfig - Deploying web application archive [/usr/local/tomee/webapps/mediation.war]
2020-04-07 16:48:37.463 [localhost-startStop-1] ERROR OpenEJB.startup - CDI Beans module deployment failed

В моем веб-приложении есть класс, который внедряет объект HttpServletRequest с помощью аннотации @Context

import javax.servlet.HttpServletRequest 

class MyClass {

@Context
HttpServletRequest request

// REST methods

}

Это дерево зависимостей имеет oop

[INFO] |  +- org.apache.hadoop:hadoop-common:jar:3.1.2:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-annotations:jar:3.1.2:compile
[INFO] |  |  |  \- jdk.tools:jdk.tools:jar:1.8:system
[INFO] |  |  +- org.apache.commons:commons-math3:jar:3.1.1:compile
[INFO] |  |  +- commons-net:commons-net:jar:3.6:compile
[INFO] |  |  +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-server:jar:9.3.24.v20180605:compile
[INFO] |  |  |  +- org.eclipse.jetty:jetty-http:jar:9.3.24.v20180605:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-io:jar:9.3.24.v20180605:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-util:jar:9.3.24.v20180605:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-servlet:jar:9.3.24.v20180605:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-security:jar:9.3.24.v20180605:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-webapp:jar:9.3.24.v20180605:compile
[INFO] |  |  |  \- org.eclipse.jetty:jetty-xml:jar:9.3.24.v20180605:compile
[INFO] |  |  +- javax.servlet.jsp:jsp-api:jar:2.1:runtime
[INFO] |  |  +- com.sun.jersey:jersey-core:jar:1.19:compile
[INFO] |  |  |  \- javax.ws.rs:jsr311-api:jar:1.1.1:compile
[INFO] |  |  +- com.sun.jersey:jersey-servlet:jar:1.19:compile
[INFO] |  |  +- com.sun.jersey:jersey-json:jar:1.19:compile
[INFO] |  |  |  +- org.codehaus.jettison:jettison:jar:1.1:compile
[INFO] |  |  |  +- com.sun.xml.bind:jaxb-impl:jar:2.2.3-1:compile
[INFO] |  |  |  +- org.codehaus.jackson:jackson-core-asl:jar:1.9.2:compile
[INFO] |  |  |  +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.7:compile
[INFO] |  |  |  +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.2:compile
[INFO] |  |  |  \- org.codehaus.jackson:jackson-xc:jar:1.9.2:compile
[INFO] |  |  +- com.sun.jersey:jersey-server:jar:1.19:compile
[INFO] |  |  +- commons-lang:commons-lang:jar:2.6:compile
[INFO] |  |  +- commons-beanutils:commons-beanutils:jar:1.9.3:compile
[INFO] |  |  +- org.apache.commons:commons-configuration2:jar:2.1.1:compile
[INFO] |  |  +- org.slf4j:slf4j-log4j12:jar:1.7.25:compile
[INFO] |  |  +- org.apache.avro:avro:jar:1.7.7:compile
[INFO] |  |  |  +- com.thoughtworks.paranamer:paranamer:jar:2.3:compile
[INFO] |  |  |  \- org.xerial.snappy:snappy-java:jar:1.0.5:compile
[INFO] |  |  +- com.google.re2j:re2j:jar:1.1:compile
[INFO] |  |  +- com.google.protobuf:protobuf-java:jar:2.5.0:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-auth:jar:3.1.2:compile
[INFO] |  |  |  +- com.nimbusds:nimbus-jose-jwt:jar:4.41.1:compile
[INFO] |  |  |  |  \- com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile
[INFO] |  |  |  +- net.minidev:json-smart:jar:2.3:compile
[INFO] |  |  |  |  \- net.minidev:accessors-smart:jar:1.2:compile
[INFO] |  |  |  |     \- org.ow2.asm:asm:jar:5.0.4:compile
[INFO] |  |  |  \- org.apache.curator:curator-framework:jar:2.13.0:compile
[INFO] |  |  +- org.apache.curator:curator-client:jar:2.13.0:compile
[INFO] |  |  +- org.apache.curator:curator-recipes:jar:2.13.0:compile
[INFO] |  |  +- org.apache.htrace:htrace-core4:jar:4.1.0-incubating:compile
[INFO] |  |  +- org.apache.zookeeper:zookeeper:jar:3.4.13:compile
[INFO] |  |  |  +- jline:jline:jar:0.9.94:compile
[INFO] |  |  |  \- org.apache.yetus:audience-annotations:jar:0.5.0:compile
[INFO] |  |  +- org.apache.kerby:kerb-simplekdc:jar:1.0.1:compile
[INFO] |  |  |  +- org.apache.kerby:kerb-client:jar:1.0.1:compile
[INFO] |  |  |  |  +- org.apache.kerby:kerby-config:jar:1.0.1:compile
[INFO] |  |  |  |  +- org.apache.kerby:kerb-core:jar:1.0.1:compile
[INFO] |  |  |  |  |  \- org.apache.kerby:kerby-pkix:jar:1.0.1:compile
[INFO] |  |  |  |  |     +- org.apache.kerby:kerby-asn1:jar:1.0.1:compile
[INFO] |  |  |  |  |     \- org.apache.kerby:kerby-util:jar:1.0.1:compile
[INFO] |  |  |  |  +- org.apache.kerby:kerb-common:jar:1.0.1:compile
[INFO] |  |  |  |  |  \- org.apache.kerby:kerb-crypto:jar:1.0.1:compile
[INFO] |  |  |  |  +- org.apache.kerby:kerb-util:jar:1.0.1:compile
[INFO] |  |  |  |  \- org.apache.kerby:token-provider:jar:1.0.1:compile
[INFO] |  |  |  \- org.apache.kerby:kerb-admin:jar:1.0.1:compile
[INFO] |  |  |     +- org.apache.kerby:kerb-server:jar:1.0.1:compile
[INFO] |  |  |     |  \- org.apache.kerby:kerb-identity:jar:1.0.1:compile
[INFO] |  |  |     \- org.apache.kerby:kerby-xdr:jar:1.0.1:compile
[INFO] |  |  +- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile
[INFO] |  |  \- com.fasterxml.woodstox:woodstox-core:jar:5.0.3:compile
[INFO] |  +- org.apache.hadoop:hadoop-hdfs:jar:3.1.2:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-util-ajax:jar:9.3.24.v20180605:compile
[INFO] |  |  +- commons-daemon:commons-daemon:jar:1.0.13:compile
[INFO] |  |  +- io.netty:netty:jar:3.10.5.Final:compile
[INFO] |  |  +- io.netty:netty-all:jar:4.0.52.Final:compile
[INFO] |  |  \- org.fusesource.leveldbjni:leveldbjni-all:jar:1.8:compile
[INFO] |  +- org.apache.hadoop:hadoop-client:jar:3.1.2:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-hdfs-client:jar:3.1.2:compile
[INFO] |  |  |  \- com.squareup.okhttp:okhttp:jar:2.7.5:compile
[INFO] |  |  |     \- com.squareup.okio:okio:jar:1.6.0:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-yarn-api:jar:3.1.2:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-yarn-client:jar:3.1.2:compile
[INFO] |  |  +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:3.1.2:compile
[INFO] |  |  |  \- org.apache.hadoop:hadoop-yarn-common:jar:3.1.2:compile
[INFO] |  |  |     \- com.sun.jersey:jersey-client:jar:1.19:compile
[INFO] |  |  \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:3.1.2:compile
[INFO] |  |     \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:3.1.2:compile
[INFO] |  \- commons-cli:commons-cli:jar:1.4:compile

Я думаю, что oop использует реализацию JAX-RS в виде джерси, а tomee использует CXF. Это вызывает столкновения во время внедрения зависимости. Как мне решить эту проблему?

...