2011-03-13 80 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的錯誤:)掙扎