Nicht in der Lage zu injizieren, @ApplicationScoped bean in der JAX-RS-service

Habe ich erstellt JAX-RS-service, in dem ich möchte, um zu injizieren, eine Anwendung scoped bean. Das problem ist, dass die bean wird nicht injiziert. Wie wird das verursacht und wie kann ich es lösen?

JAX-RS-service:

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

Application-scoped 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;
    }

}
  • Ihre GameController code nicht kompilieren und es fehlen auch @Named. Bitte nicht schreiben Sie nicht getesteten code. Copypaste der realen und getesteten code statt.
  • Ich habe es behoben. Sorry. Ich habe @Named aber es funktioniert immer noch nicht. Ich dachte, dass @Named ist nur für EL, das ist, warum ich nicht fügen Sie diese vor.
  • Warum @Benannte? Wird nicht keinen Unterschied machen.
  • Nur um es klar, deutlich für alle, die dies Lesen, als Karl Kilden und pepuch wies darauf hin, @Named ist nur erforderlich für EL.
InformationsquelleAutor pepuch | 2013-03-16
Schreibe einen Kommentar