【问题标题】:$Proxy$_$$_WeldClientProxy cannot be cast to javassist.util.proxy.ProxyObject when inject cdi bean to jax-rs controller将 cdi bean 注入 jax-rs 控制器时,$Proxy$_$$_WeldClientProxy 无法转换为 javassist.util.proxy.ProxyObject
【发布时间】:2019-06-01 14:54:56
【问题描述】:

我正在尝试创建一个 Jax-rs 控制器并将 CDI bean 注入此控制器,但应用程序给出了以下异常。

当我不注入 bean 时它工作正常。

该项目还使用了 Hibernate,并且它具有 javassist 依赖项。当我删除此依赖项时,我可以毫无问题地将 bean 注入控制器,但当然休眠在这种情况下不起作用。

什么可能导致这个异常?

我正在使用 weblogic 12.1.3 服务器。

这是我要注入的服务 bean

@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";
    }
}

堆栈跟踪:

]] 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

【问题讨论】:

    标签: hibernate jakarta-ee jax-rs weblogic12c javassist


    【解决方案1】:

    我感到内疚,因为我从未使用过 javassist,所以这更像是一种普遍的直觉。但是您的问题听起来可能是 jar 冲突。

    任何使用 maven 的人都应该将 ENFORCER 插件作为他们构建的一部分。这是一个巨大的痛苦,因为大多数项目在你第一次运行它时需要大约半天的时间来消除所有冲突的传递依赖。它会让你想知道没有它任何程序是如何工作的。

    无论如何,这里值得一提的是一个 pom sn-p,它允许您运行 enforcer:enforce 目标以及将自身绑定到 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>
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2014-06-30
      • 2012-12-29
      • 2013-02-15
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多