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

将EJB服务注入web的不满足依赖项(war)

干京
2023-03-14

My beans.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                       http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="annotated">
</beans>

我的服务(后端类型的EJB)如下所示:

import javax.inject.Inject;
import javax.transaction.Transactional;

@Default
@Transactional(Transactional.TxType.REQUIRED)
public class UserServiceImpl implements UserService {

@Inject
private UserDao userDao;

@Inject
private UserMapper mapper;

@named注释bean使用以下(web):

import javax.inject.Inject;
import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;

@ViewScoped
@Named("indexMBean")
public class IndexMBean extends AbstractViewBean {

    @Inject
    private UserService userService;

Build已成功,但deploy给了我这个例外:

2018-11-12 11:28:25,706错误[org.jboss.MSC.service.fail](MSC服务线程1-2)MSC000001:无法启动服务jboss.deployment.unit。“kajava-ear-0.0.1-snapshot.ear”。WeldStartService:org.jboss.MSC.service.startService在服务jboss.deployment.unit中出现异常。“kajava-ear-0.0.1-snapshot.ear”。WeldStartService:无法在N:WELLD-001408:类型UserService的依赖关系不满足,限定符@default位于注入点[BackedAnnotatedField]@inject private hu.food.bean.indexmbean.UserService位于hu.food.bean.indexmbean.UserService(indexmbean.java:0)

共有1个答案

申查猛
2023-03-14

您正在beans.xml中使用annotated发现模式,这意味着只有具有所谓Bean定义注释的Bean才会被发现并注册为Bean。请参阅CDI规范以获得属于那里的所有注释;对于您的用例,您缺少了bean作用域。

如果您从userserviceimpl中删除@default限定符(它没有用,反正它是添加在那里的;spec链接),并向bean添加一个作用域,它应该可以工作。根据bean的行为(从生命周期的角度来看),您可以将其设置为@applicationscoped@sessionscoped@requestscoped@conversationscoped@dependent(、@singleton)。

 类似资料:
  • 我正在尝试创建一个带有Wildfly和数据库连接的EJB Web项目,以持久化我的类“article”。但当我启动我的应用程序时,我得到了错误 包装服务; ArticleDaoImpl

  • 我有bean,它实现了两个接口(远程和本地)。我还添加了注释,用于使用无接口视图访问bean。 我使用的原因取自JBoss AS7快速入门示例: > WeatherDataBean具有: 资源具有:

  • 我的问题与注入EntityManager时的WELD-001408未满足依赖项和WELD-001408未满足依赖项不同。虽然这些问题涉及尝试将托管bean注入到无状态EJB中,但我正尝试进行相反的操作。 当我试图将一个@Stateless@Local interfaced bean注入到一个web托管bean中时,我得到了一个“未满足的依赖项”。我正在用各种EJB模块和web模块构建一个EAR,在

  • 我正在尝试将两个独立的战争迁移到一个耳朵里。 运行在WebLogic 12.2.1上,所以Java EE 7(CDI 1.1和EJB 3.1)。 每个WAR都包含相同的JAR库,其中包含许多@Stateless EJB和@Named CDI托管bean: 我已经执行了几个必需的步骤: 将包含ejb和CDI托管bean的ejb-cdi.jar的打包类型更改为ejb 将ejb-cdi.jar配置为po

  • org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“com.sonos.arcor.service.AddressServiceTest”的bean时出错:通过字段“service”表示的未满足的依赖项;嵌套异常为org.springframework.beans.factory.noSuchBeanDefin