2016-03-22 17 views
5

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> 

<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ì?

+0

Tôi đã tìm thấy Lỗi của mình. Tôi chỉ phải tạo lớp ScheduleRESTResource là ManagedBean. –

+0

Đó là một lỗi khác. Tôi đã phải sử dụng "jaxrs-weld" thay vì phụ thuộc "hàn". –

Trả lời

0

Tôi nghĩ bạn đang thiếu phần CDD Swarm. Thay vào đó hãy thử thêm tùy chọn này vào phụ thuộc của bạn.

<dependency> 
    <groupId>org.wildfly.swarm</groupId> 
    <artifactId>cdi</artifactId> 
</dependency> 
Các vấn đề liên quan