2011-03-13 48 views
1

I',试图在我的web.xml中将javax.faces.PROJECT_STAGE设置为“production”,但在运行时我发现该值始终“发展”。调试显示了非常奇怪的事情,无法解决问题。在GF 3.0.1和GF 3.1上都尝试过 - 都一样。Glassfish 3:无法将javax.faces.PROJECT_STAGE设置为“production”

这里是一片我的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导致在发展模式令人沮丧的警告..

回答

0

不是一个解决办法,但一些想法:

,如果你删除什么项目阶段的上下文参数?据我所知,如果没有在web.xml或default-web.xml中定义任何内容,Production应该是默认阶段。

另一个想法:你的default-web.xml在glassfish/glassfish/config目录下看起来如何?

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

+0

谢谢,其实我尝试了一切。出于某些原因,“发展”是无论如何设置的。由于3.1包含对EJB的严重修复,因此我也无法回到3.0.1。请参阅下面我的扩展答案 – bitec 2011-03-16 05:05:53

0

我无法修复这个错误,不知道,为什么WeldApplication一直返回开发阶段,调试表现得有点奇怪,我无法得到真正的原因..试图手动设置WeldApplicationFactory,但没有结果。最后,我做的和丑陋的解决办法,但它让我改变阶段,并从JSF摆脱恼人的消息(“问候”到钻嘴鱼科队)

首先覆盖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; 
} 

}

然后覆盖WeldApplication:

/* 

* *创建于2011年3月13日 * * $ $项目* $工作文件$ * $版本$ */

公共类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-新ApplicationFactory config.xml中。

这为我工作,但这种解决方案并不美丽可言,但它让我感动我自己的发展,而不是与钻嘴鱼科/ Glassfish的错误:)挣扎