WildFly Swarm Nullpointer @Inject bean

Posted

技术标签:

【中文标题】WildFly Swarm Nullpointer @Inject bean【英文标题】: 【发布时间】:2016-07-09 11:06:04 【问题描述】:

我有一个计划服务,它通过 REST 作为 JSON 获取其工作。

Resource 类:

import java.io.IOException;

import javax.inject.Inject;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;

import de.fszm.scheduler.controller.SchedulerController;
import de.fszm.scheduler.entities.MySchedule;

@Path("/schedule")
public class ScheduleRESTResource 

    @Inject
    SchedulerController scheduleController;

    @POST
    @Path("/job")
    @Consumes(MediaType.APPLICATION_JSON)
    public void schedule(MySchedule schedule) throws IOException 
        scheduleController.buildSchedule(schedule);
    

ScheduleController:

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

import de.fszm.scheduler.entities.MySchedule;

@Named
@RequestScoped
public class SchedulerController 



    public void buildSchedule(MySchedule schedule) 
        System.out.println("Test");
    


SchedulerMain

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.wildfly.swarm.container.Container;
import org.wildfly.swarm.jaxrs.JAXRSArchive;

import de.fszm.scheduler.controller.SchedulerController;
import de.fszm.scheduler.entities.MySchedule;
import de.fszm.scheduler.rest.JaxRSActivator;
import de.fszm.scheduler.rest.ScheduleRESTResource;

public class SchedulerMain 

    public static void main(String[] args) 

        try 
            Container container = new Container();
            container.start();

            JAXRSArchive appDeployment = ShrinkWrap.create(JAXRSArchive.class);

            appDeployment.addResource(ScheduleRESTResource.class);
            appDeployment.addResource(JaxRSActivator.class);
            appDeployment.addClass(MySchedule.class);
            appDeployment.addClass(SchedulerController.class);
            appDeployment.addAllDependencies();

            container.deploy(appDeployment);

         catch (Exception e) 
            e.printStackTrace();
        
    

MySchedule 只是一个 POJO

我的问题是,当我 POST JSON 时,我得到一个 NullPointerException 用于注入的 SchedulerController

我在src/main/webapp/WEB-INFpom.xml 中也有一个 beans.xml,我对 CDI(焊接)有以下依赖项

<dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>weld</artifactId>
</dependency>

<dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>1.2</version>
</dependency>

我正在使用 WildFly swarm 1.0.0 beta 6

我错过了什么?

【问题讨论】:

我发现了我的错误。我只需要将 ScheduleRESTResource 类设为 ManagedBean。 这是另一个错误。我不得不使用“jaxrs-weld”而不是“weld”依赖。 【参考方案1】:

我认为您缺少 Swarm CDI 部分。 请尝试将其添加到您的依赖项中。

<dependency>
  <groupId>org.wildfly.swarm</groupId>
  <artifactId>cdi</artifactId>
</dependency>

【讨论】:

以上是关于WildFly Swarm Nullpointer @Inject bean的主要内容,如果未能解决你的问题,请参考以下文章

Wildfly Swarm YML属性文件

Wildfly-Swarm 并通过资源适配器连接到外部 activemq:WFLYCTL0412

执行目标 wildfly swarm 插件时出现问题,API 不兼容,java.lang.AbstractMethodError

使用 Thorntail / Wildfly Swarm 配置 db2 数据源

开发中关于IPv6的问题

K8s的POD连接数据库时报错