6

I have a schedule service which gets its job via REST as JSON.

The Resource class:

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);
    }
}

The 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");
    }

}

The 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();
        }
    }
}

And the MySchedule ist just a POJO

My problem is that when I POST JSON to the I get a NullPointerException for the injected SchedulerController.

I also have a beans.xml in src/main/webapp/WEB-INF and in my pom.xml I have the following dependency for CDI (weld)

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

and

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

I am using WildFly swarm 1.0.0 beta 6

What did I miss?

Alex
  • 8,093
  • 6
  • 49
  • 79
Marekzan
  • 93
  • 1
  • 9

1 Answers1

0

I think you are missing the Swarm CDI fraction. Try adding this to your dependencies instead.

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