我已經創建了JAX-RS服務,我想在其中注入一個應用程序作用域bean。問題是這個bean沒有被注入。這是如何造成的,我該如何解決這個問題?無法在JAX-RS服務中注入@ApplicationScoped bean
JAX-RS服務:
@Path("room")
public class RoomService {
@Inject
GameController gc;
public RoomService() {}
@Path("create")
@GET
@Produces("application/json")
public String create() {
Room r = new Room();
gc.addRoom(r); // gc is null
return r.toJson();
}
}
應用範圍的bean
import java.util.ArrayList;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import pepuch.multuplayergameserver.entity.Game;
import pepuch.multuplayergameserver.entity.Room;
@Named
@ApplicationScoped
public class GameController {
private Game game;
public GameController() {
this.game = new Game(new ArrayList<Room>());
}
public boolean addRoom(Room room) {
if (!game.getRooms().contains(room)) {
return game.getRooms().add(room);
}
return false;
}
}
您的'GameController'代碼不能編譯,也缺少'@ Named'。請不要寫下未經測試的代碼。改爲複製真實且經過測試的代碼。 – BalusC 2013-03-16 19:02:18
我修復了它。抱歉。我添加了@ @命名,但它仍然不起作用。我雖然'@ Named'只用於'EL',這就是爲什麼我沒有添加這個之前。 – pepuch 2013-03-16 19:23:06
爲什麼@Named?不會有任何區別。 – 2013-03-17 15:47:50