2015-07-03 38 views
0

我目前正在部署我的自定義控件作爲OSGi插件,我想用我的豆做同樣的事情。我已經嘗試把它們放入OSGi插件,它工作正常,但我唯一的問題是faces-config。在OSGi插件中部署BEAN

看來它必須在OSGi插件中調用faces-config才能工作,但這意味着我不能在NSF中使用bean,因爲它似乎忽略了本地faces-config。

有沒有辦法改變OSGi插件中faces-config的名字?

Something like FEATURE-faces-config.xml?

+0

你能否澄清「它似乎忽略了本地faces-config」?你的意思是你嘗試在OSGi插件中使用Java類並在NSF的faces-config中引用該類,並且這種方法無效? –

+0

我有兩個豆子。一個通過OSGI插件部署。我還將faces-config文件插入到WEB-INF文件夾中。然後在我的NSF中的一個BEAN中,我也想使用插件中的BEAN。在我的NSF中,我將bean放入「local」faces-config中,但似乎它忽略了本地faces-config,一旦我有一個來自OSGI插件。 – user2316219

+0

他們都有同名嗎? –

回答

4

在擴展AbstractXspLibrary的插件中的類中,可以覆蓋「getFacesConfigFiles」,它應該將代表插件內路徑的字符串數組返回到任何名稱的其他文件以加載爲faces-config添加。例如:

@Override 
public String[] getFacesConfigFiles() { 
    return new String[] { 
     "com/example/config/beans.xml" 
    }; 
} 

然後你就可以把你的Java源文件夾內的路徑配置文件(或包含在build.properties另一個文件夾),它會在除了你的應用程序的正常faces-加載配置,豆和所有。

+0

Thx多數民衆贊成在我正在尋找。 – user2316219

1

NSF作爲單獨的獨立Java應用程序運行。 OSGi插件作爲單個代碼庫在OSGi層中運行,高於所有不同的Java應用程序。因此,faces-config僅在該級別。

通過使用從XspContributor加載的ImplicitObjectFactory,可以動態加載它們。這就是OpenNTF Domino API在例如userScope(這是一個存儲在NSF的applicationScope中的bean)。請參閱org.openntf.domino.xsp.helpers.OpenntfDominoImplicitObjectFactory,它在OpenntfDominoXspContributor中引用,通過類型爲「com.ibm.xsp.library.Contributor」的擴展點加載。

幾個注意事項:

  1. 你有過,如果你嘗試你的bean與開發者也使用該範圍不同的變量的名稱註冊會發生什麼無法控制。
  2. 除非您添加代碼以檢查庫是否已啓用,否則您將在服務器上每數據庫將該bean添加到
  3. 您仍然需要將庫添加到NSF。據我所知,除非您還提供了這些數據庫都將使用的組件,否則您無法以編程方式添加它。

跳過bean方法可能會更簡單,只需在beforePageLoad,頁面控制器類中添加Java類的實例,或者您要管理相關XPage(如果viewScope)或應用程序(如果sessionScope/applicationScope)。