Glassfish 3: невозможно установить javax.faces.PROJECT_STAGE в «производство» - PullRequest
1 голос
/ 13 марта 2011

I ', пытаюсь установить javax.faces.PROJECT_STAGE в "production" в моем web.xml, но во время выполнения я вижу, что значение всегда "development". Отладка показывает очень странные вещи, не может добраться до ситуации. Пробовал как на GF 3.0.1, так и на GF 3.1 - то же самое.

Вот часть моего web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/applicationContext*.xml</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
    <param-value>/WEB-INF/rstk-tag.taglib.xml</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>rstk.DOWNLOAD_PATH</param-name>
    <param-value>c:\glassfish3.1\downloads</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

и это

FacesContext.getCurrentInstance().getApplication().getProjectStage()

всегда возвращает развитие!

Любая помощь приветствуется, для меня это настоящий пробел, поскольку JSF 2.1 в GF 3.1 приводит к разочаровывающему предупреждению в режиме разработки.

Ответы [ 3 ]

3 голосов
/ 15 июня 2011

Хорошо, наконец я нашел реальную причину для этого персонала.

Это Джребел. По некоторым причинам они форсируют режим РАЗВИТИЯ для jsf. Более подробно вы можете увидеть http://java.net/jira/browse/JAVASERVERFACES-2079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel - блок комментариев. У другого человека была такая же проблема, и он наконец выяснил основную причину.

Надеюсь, это поможет всем.

0 голосов
/ 16 марта 2011

Я не мог исправить ошибку, не знаю, почему WeldApplication продолжает возвращать этап разработки, отладка вела себя немного странно, и я не мог найти реальную причину. Попытался вручную установить WeldApplicationFactory, но безрезультатно. Наконец-то я сделал и уродливый обходной путь, но он помог мне сменить сцену и избавиться от надоедливого сообщения от JSF («привет» команде Mojarra)

Сначала переопределите WeldApplicationFactory, чтобы вернуть ваше собственное приложение:

public class CustomApplicationFactory extends WeldApplicationFactory {



/**
 * TBD
 * @param delegate
 */
public CustomApplicationFactory(ApplicationFactory delegate) {
    super(delegate);
    this.delegate = delegate;
}
private final ApplicationFactory delegate;

private Application application;


@Override
public void setApplication(Application application) {
    this.application = application;
    delegate.setApplication(application);
}

@Override
public Application getApplication() {
    if (application == null) {
        application = new HuckApplication(delegate.getApplication());
    }
    return application;
}

}

Затем переопределите приложение Weld:

/*

* * Создано 13.03.2011 * * $ Project $ * $ Workfile $ * $ Revision $ * /

открытый класс HuckApplication расширяет WeldApplication {

/**
 * TBD
 * @param application
 */
public HuckApplication(Application application) {
    super(application);
    // TODO Auto-generated constructor stub
}

/**
 * @see javax.faces.application.ApplicationWrapper#getProjectStage()
 */
@Override
public ProjectStage getProjectStage() {
    return ProjectStage.Production;
}

}

и зарегистрируйте свой новый ApplicationFactory в файле face-config.xml.

Это сработало для меня, хотя это решение совсем не красиво, но оно позволило мне перейти к собственной разработке, а не бороться с ошибками Mojarra / Glassfish:)

0 голосов
/ 15 марта 2011

Не решение, но некоторые идеи:

Что если вы удалите контекстный параметр для стадии проекта?Насколько я помню, производство должно быть стадией по умолчанию, если в web.xml или default-web.xml ничего не определено.

Другая идея: как выглядит ваш default-web.xml в каталоге glassfish / glassfish / config?

Попробуйте переместить контекстный параметр в самую первую позицию параметров.

...