Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Glassfish 3:无法将javax.faces.PROJECT_STAGE设置为";生产";_Jsf 2_Glassfish 3_Jrebel - Fatal编程技术网

Jsf 2 Glassfish 3:无法将javax.faces.PROJECT_STAGE设置为";生产";

Jsf 2 Glassfish 3:无法将javax.faces.PROJECT_STAGE设置为";生产";,jsf-2,glassfish-3,jrebel,Jsf 2,Glassfish 3,Jrebel,我试图在我的web.xml中将javax.faces.PROJECT_STAGE设置为“production”,但在运行时,我发现其值始终是“development”。调试显示出非常奇怪的事情,无法达到这种情况。。在GF 3.0.1和GF 3.1上都试过-相同 下面是my web.xml的一部分: <context-param> <param-name>contextConfigLocation</param-name> <param-v

我试图在我的web.xml中将javax.faces.PROJECT_STAGE设置为“production”,但在运行时,我发现其值始终是“development”。调试显示出非常奇怪的事情,无法达到这种情况。。在GF 3.0.1和GF 3.1上都试过-相同

下面是my 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>
永远回报发展


感谢您的帮助,这对我来说是一个真正的障碍,因为GF 3.1中的JSF 2.1在开发模式中会导致令人沮丧的警告。

不是一个解决方案,而是一些想法:

如果删除项目阶段的上下文参数会怎么样?就我所记得的,如果web.xml或default-web.xml中没有定义任何内容,那么生产应该是默认阶段

另一个想法:glassfish/glassfish/config目录中默认的web.xml是什么样子


尝试将上下文参数移动到参数的第一个位置。

我无法修复该错误,不知道为什么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;
}
/*
}

然后覆盖该应用程序:

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;
}
/*
* *创建于2011年3月13日 * *$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;
}
}

并在faces-config.xml中注册新的ApplicationFactory


这对我来说很有效,虽然这个解决方案一点也不漂亮,但它让我可以继续自己的开发,而不是与Mojarra/Glassfish bug抗争:)

好的,最后我找到了这个员工的真正原因

是Jrebel。出于某些原因,它们强制使用jsf的开发模式。有关更多详细信息,请参见-注释块。另一个人也有同样的问题,最终找到了核心原因


希望这对大家都有帮助。

谢谢,实际上我什么都试过了。出于某些原因,“开发”被设定为“无论如何”。我也不能回到3.0.1,因为3.1包含了对EJB的严重修复。请参阅下面我的扩展答案