当前位置: 首页 > 知识库问答 >
问题:

WebSphere-由其他maven模块的生产者生产的bean停止被看到

苏高远
2023-03-14

我正在IBM RAD 9下开发WebSphere 8.5的应用程序,使用EJB 3:(

我已将项目拆分为以下 maven 模块:

  • dto(仅限“愚蠢”的传输对象)
  • ejb(业务逻辑)
  • web(其余频道,构建类型为WAR)
  • ear(构建类型是ear)

EJB模块在META-INF中有空的beans.xml文件。那里有一个生产者类,它产生一些my.ejb.HelperClass

 @ApplicationScoped
public class MyHelperProducer {
    @Produces
    @ApplicationScoped
    public HelperClass produceGenWsClient() {
        ....
    }
}

这种用法非常简单:

@Inject
private HelperClass helper;

它已经在工作了!经过代码的一些改动(涉及到很多类很多字段的重构,但不涉及那些!)一切都停止了作用。现在我得到这样的错误信息:

[8/27/14 16:33:38:960 CEST]00000063 Bean s deployer E Bean s deploy javax . ENTERPRISE . inject . unsatisfiedresolutionexception:找不到Api类型[my.ejb.HelperClass]的限定符限定符:[@ javax . ENTERPRISE . inject . default()]用于注入到字段注入点,Field:private my . EJB . helper class my . web . my channel . helper,Bean所有者:[WSEjbBean [businessLocals

有趣的是,我在其他应用程序中已经遇到了这样的错误,但我通过启动服务器清理并删除项目并将其重新导入工作区,解决了这些错误。然而,现在,即使这样也不起作用。

这里到底有什么问题?无线电里有大虫子吗?或者我做错了什么,这只是偶然的工作之前?如何诊断此类错误?

共有1个答案

谷出野
2023-03-14

检查此链接以排除上下文故障和依赖项注入。也许它会帮助你。引用:

> < li>

解决不可满足的依赖关系。< br >当与应用程序中的注入点匹配的对象没有相应的源时,会出现不可满足的依赖项,即javax . enterprise . inject . unsatisfiedresolutionexception。字段的API类型,以及可选的限定符注释集,决定了满足依赖关系的有效beans集。不可满足的依赖性的原因如下:

  • 没有可分配给注入点上的类型的托管bean
  • 没有任何托管bean的生产者方法,其返回类型可分配给注入点
  • 在任何类型可分配给注入点的托管bean中都没有producer字段
  • 前面提到的场景之一是有效的,但是注入点上的限定符注释在bean或生产者上不存在

通过引入新bean、删除限定符或添加生成器字段或方法,使API类型和限定符的依赖关系可用,从而解决该错误

如果bean是在一个模块中创建的,而在另一个模块中使用,那么您可能会缺少一些类路径依赖。

 类似资料:
  • 我们使用StreamListeners for Spring Kafka,并使用基于JPA的发件箱发送消息。发件箱是从消费中异步清空的,因此我们不希望“从JPA表读取,向Kafka生成消息”上的事务。 但是我们也有重试主题,因此如果使用失败,我们会将失败的消息移动到重试主题(最终是DLT),这确实需要事务性的。 据我所知,只有在全局基础上(设置事务id前缀),而不是在具体绑定上,才有可能为生产者打

  • 我有一个消费者作为生产者消费者模式的一部分: 简化: 如果我移除 通过将线程设置为睡眠,CPU使用率攀升到极高的水平(13%),而不是0%。 此外,如果我实例化该类的多个实例,则每个实例的CPU使用率都会以13%的增量攀升。 大约每分钟(可能每30秒)都会向BlockingCollection添加一个新的LogItem,并将适用的消息写入文件。 有没有可能线程以某种方式阻止了其他线程的运行,而系统

  • 我有一个生产者/消费者模式,如下所示 固定数量的生成器线程,每个线程写入它们自己的BlockingQueue,通过执行器调用 单个使用者线程,读取生产者线程 每个生产者都在运行一个数据库查询,并将结果写入其队列。消费者轮询所有生产者队列。目前,如果出现数据库错误,生产者线程就会死掉,然后消费者就会永远停留在产品队列中等待更多的结果。 我应该如何构造它来正确处理catch错误?

  • 生产者线程与消费者线程使用信号量同步 生产者线程与消费者线程使用信号量同步 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-08-24 yangjie the f

  • 下面是代码,我面临的问题是recordRead变量告诉线程应该从哪里开始读取记录的起点。但是我如何为每个线程设置不同的值?例如,对于thread1,它应该是0,recordsToRead应该是300,对于thread2,recordsToRead应该是300+300=600,对于最后一个线程,它应该是600以及更高的结束。pagesize=50pagesize、recordRead和recordT

  • 一、线程间通信的两种方式 1.wait()/notify() Object类中相关的方法有notify方法和wait方法。因为wait和notify方法定义在Object类中,因此会被所有的类所继承。这些方法都是final的,即它们都是不能被重写的,不能通过子类覆写去改变它们的行为。 ①wait()方法: 让当前线程进入等待,并释放锁。 ②wait(long)方法: 让当前线程进入等待,并释放锁,