$ Proxy $ _ $$ _ WeldClientProxy не может быть приведен к javassist.util.proxy.ProxyObject при внедрении bean-компонента cdi в контроллер jax-rs - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь создать контроллер Jax-rs и внедрить компонент CDI в этот контроллер, но приложение выдает следующее исключение.

Работает нормально, когда я не ввожу бин.

Проект также использует Hibernate и имеет зависимость от javassist. Когда я удаляю эту зависимость, я могу без проблем внедрить bean-компонент в контроллер, но, конечно, hibernate не работает в этой ситуации.

Что может быть причиной этого исключения?

Я использую сервер weblogic 12.1.3.

Это служебный компонент, который я хочу внедрить

@Named("AccountBcImpl")
public class AccountBcImpl extends AccountBaseBcImpl implements AccountBc {
   ...
}

Это контроллер jax-rs

@Named
@javax.enterprise.context.ApplicationScoped
@Path("/build")
public class BuildCotroller {

    @Inject
    private AccountBc accountBc;



    public String getBuilding(@QueryParam("buildId") Long buildId) throws BaseException {
        return "Hello";
    }
}

Stacktrace:

]] Root cause of ServletException.
org.jboss.weld.exceptions.WeldException: WELD-000830 Unable to load the cache value for the key Managed Bean [class com.aaa.bbb.web.rest.BuildController] with qualifiers [@Default @Any]
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:73)
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:112)
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:93)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.getClientProxy(ClientProxyProvider.java:102)
    at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:621)
    Truncated. see log file for complete stacktrace
Caused By: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.ClassCastException: com.aaa.bbb.web.rest.BuildController$Proxy$_$$_WeldClientProxy cannot be cast to javassist.util.proxy.ProxyObject
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2234)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3965)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3969)
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4829)
    at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:71)
    Truncated. see log file for complete stacktrace
Caused By: java.lang.ClassCastException: com.aaa.bbb.web.rest.BuildController$Proxy$_$$_WeldClientProxy cannot be cast to javassist.util.proxy.ProxyObject
    at org.jboss.weld.bean.proxy.ProxyFactory.create(ProxyFactory.java:249)
    at org.jboss.weld.bean.proxy.ClientProxyFactory.create(ClientProxyFactory.java:105)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.createClientProxy(ClientProxyProvider.java:87)
    at org.jboss.weld.bean.proxy.ClientProxyProvider.access$000(ClientProxyProvider.java:43)
    at org.jboss.weld.bean.proxy.ClientProxyProvider$1.load(ClientProxyProvider.java:53)
    Truncated. see log file for complete stacktrace

1 Ответ

0 голосов
/ 14 января 2019

Я чувствую себя виноватым, когда отвечаю на этот вопрос, потому что это скорее общее настроение, так как я никогда не использовал javassist. Но ваша проблема звучит так, как будто это может быть конфликт с банкой.

Любой, кто использует maven, должен иметь плагин ENFORCER. Это ОГРОМНАЯ боль, потому что большинству проектов понадобится около половины дня, чтобы устранить все конфликтующие переходные зависимости при первом запуске. Это заставит задуматься, как любая программа работала без нее.

Как бы то ни было, здесь приведен фрагмент кода pom, который позволит вам запустить принудительный контроль: реализовать цель, а также привязать себя к цели VALIDATE.

<!-- THIS IS THE ENFORCER PLUGIN FOR MAVEN enforcer:enforce GOAL -->
        <!-- SPECIFIC GOALS VS LIFECYCLE GOALS MUST HAVE THE EXECUTION ID default-cli -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <id>default-cli</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <DependencyConvergence/>
                            <bannedDependencies>
                                <searchTransitive>true</searchTransitive>
                                <excludes>
                                    <exclude>log4j:log4j</exclude>
                                </excludes>
                            </bannedDependencies>
                        </rules>
                        <fail>true</fail>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!-- THIS IS THE ENFORCER PLUGIN FOR MAVEN VALIDATION GOAL BUILDS -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <id>enforce-banned-dependencies</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <DependencyConvergence/>
                            <bannedDependencies>
                                <searchTransitive>true</searchTransitive>
                                <!-- Excludes are a list of includes that must NEVER be used -->
                                <!-- BOTH explicity and implicitly - They are completely forbidden -->
                                <excludes>
                                    <exclude>log4j:log4j</exclude>
                               </excludes>
                            </bannedDependencies>
                        </rules>
                        <fail>true</fail>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...