Java EE - @Postconstruct не вызывается - PullRequest
0 голосов
/ 17 мая 2018

У меня есть страница в формате xhtml, которая использует вспомогательный компонент для получения информации. В этом компоненте поддержки есть метод, определенный с аннотацией @PostConstruct. Однако этот метод никогда не вызывается, и я не могу понять, почему. В журнале нет ошибок.

Я использую Java EE 7 и Payara 5.181.

Я пробовал следующие вещи:

  • Удалены все сгенерированные данные и кеш на сервере.
  • Удален ввод службы ModeratorService.
  • Проверил документацию PostConstruct , чтобы убедиться, что все настроено так, как должно.

Вот мой код:

moderator.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html   xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:p="http://primefaces.org/ui"
        >

    <h:head>
        <title>Moderator Pagina</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <link rel="stylesheet" type="text/css" href="style.css"/>
    </h:head>
    <h:body>
        <p:dataTable var="user" value="#{moderatorManager.twitterUsers}">
            <p:column headerText="Username">
                <h:outputText value="#{user.username}" />
            </p:column>
        </p:dataTable>
    </h:body>
</html>

ModeratorManager.java

package com.guido.web;

import com.guido.models.TwitterUser;
import com.guido.services.ModeratorService;
import java.io.Serializable;
import java.util.Set;
import javax.annotation.PostConstruct;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

@Named
@SessionScoped
public class ModeratorManager implements Serializable {

    @Inject
    ModeratorService moderatorService;

    private Set<TwitterUser> twitterUsers;

    @PostConstruct
    public void init() {
        System.out.println("Postconstruct method is called!"); // <-- This does not show up in the server log.
        twitterUsers = moderatorService.getUsersWithRole();
        System.out.println("Initialized moderatorManager: " + twitterUsers.toString()); // <-- This does not show up in the server log.
    }

    public Set<TwitterUser> getTwitterUsers() {
        return twitterUsers;
    }

    public void setTwitterUsers(Set<TwitterUser> twitterUsers) {
        this.twitterUsers = twitterUsers;
    }
}
...