java - WAS 7.0.0.23 - MDB 中带有激活规范的默认拦截器会抛出 classcastException

标签 java ejb websphere interceptor

我在 Websphere 中遇到了 MDB 拦截器的问题。 我使用 ActivationSpec 为 MDB 配置了 defaultInterceptor,而不是 WAS 7.0.0.23 中的监听器端口。我收到 ClassCastException。相同的配置适用于 SessionBean。

<assembly-descriptor><interceptor-binding>
<ejb-name>*</ejb-name>
    <interceptor-class>com.LoggingInterceptor</interceptor-class>
</interceptor-binding></assembly-descriptor>

异常:LocalExceptio E CNTR0019E:EJB 在调用方法“onMessage”期间引发意外(未声明)异常。异常数据:javax.ejb.EJBException:注入(inject)失败;嵌套异常是:java.lang.IllegalArgumentException:java.lang.ClassCastException

http://www-01.ibm.com/support/docview.wss?uid=swg1PM53989 此链接表示,仅当我们使用监听器端口时才会出现此问题 - 但我们使用的是激活规范。

感谢您的帮助。

最佳答案

此错误消息很糟糕,但这意味着您有方法注入(inject),但(查找的)目标类型与代码中的类型不匹配。例如,如果您有:

@Resource
public void setQueue(QueueConnectionFactory qcf) { ... }

...但是您已经为此资源指定了指向数据源的绑定(bind),那么您将收到 ClassCastException。我建议删除所有注入(inject)(可能是从拦截器或其父类(super class)中删除,因为只有在添加它时才会出现错误),然后慢慢地重新添加它们,直到发现问题为止。

关于java - WAS 7.0.0.23 - MDB 中带有激活规范的默认拦截器会抛出 classcastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16485659/

相关文章:

java - 如何在 Linux 上将 JavaFX 多点触控事件与 JFX Pane 组件一起使用

java - 一个项目中的依赖注入(inject)

java - MQJMS2013 无效的安全认证

java - 是 8.5.5。 Web 应用程序在启动期间出现 NoSuchFieldError

java - 我可以在 websphere 中使用外部 jdk 路径吗

java - 在主屏幕应用程序中禁用主页按钮?

java - 如何编写可分析的线程转储格式

java - 在 JLabel 上分层文本

jakarta-ee - javax.命名.NameNotFoundException : While trying to lookup 'abc' didn't find subcontext 'abc'

java - EJB 和在数据结构(映射、列表等)中存储对象