我已经创建了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