Tôi có một dịch vụ lịch biểu nhận công việc của mình thông qua REST dưới dạng JSON.WildFly Swarm Nullpointer @Inject bean
Lớp 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);
}
}
Các 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");
}
}
Các 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();
}
}
}
Và ist MySchedule chỉ là một POJO
Vấn đề của tôi là khi tôi POST
JSON để tôi nhận được NullPointerException
cho số được tiêm SchedulerController
.
Tôi cũng có một beans.xml trong src/main/webapp/WEB-INF
và trong tôi pom.xml
tôi đã phụ thuộc sau đây để CDI (hàn)
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>weld</artifactId>
</dependency>
và
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
</dependency>
Tôi đang sử dụng WildFly đám 1.0.0 beta 6
Tôi đã bỏ lỡ điều gì?
Tôi đã tìm thấy Lỗi của mình. Tôi chỉ phải tạo lớp ScheduleRESTResource là ManagedBean. –
Đó là một lỗi khác. Tôi đã phải sử dụng "jaxrs-weld" thay vì phụ thuộc "hàn". –