我有一個託管bean綁在我的index.xhtml
JSF網頁,其中使用注入EJB這樣的:Glassfish的拒絕訪問JSF頁面,返回403 HTTP響應代碼
// Code inside managed bean
@EJB
QueryEndpointLocal queryEndpoint;
public void search() {
//...
SearchResult result = queryEndpoint.search(query, resultFormat);
//...
}
QueryEndpoint又需要另一個名爲EJB的優勢QueryEngine
:
// Code inside QueryEndpoint
@EJB
QueryEngine queryEngine;
目前,我還有一個EJB非常相似QueryEngine
命名QueryEngineLite
。它們的區別在於QueryEngineLite
使用本地轉儲文件捆綁到企業應用程序作爲資源,而QueryEngine
連接到HBASE數據庫。它們都在啓動時加載,並且有一個@PostConstruct
-annotated方法來初始化連接。 QueryEndpoint
僅在其中一個被部署的應用程序中使用,另一個則只有Startup
和PostConstruct
註釋被註釋掉。我知道有更好的方法來處理這個問題,而我目前的解決方案是一個糟糕的解決方案,但是在項目的未來階段這將會改變。我們計劃利用AppServer管理的連接池與HBASE進行通信,但現在連接由使用HBASE的Java API的庫處理。
現在,我在使用Lite EJB時沒有任何問題。接口工作,Web服務工作,一切都很好。只是當我使用HBASE綁EJB(QueryEngine
),與Glassfish的HTTP 403錯誤的請求的index.xhtml響應和以下幾行代碼插入的server.log:
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "" "GET") ")
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "" "GET:CONFIDENTIAL") ")
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "/favicon.ico" "GET") ")
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "/favicon.ico" "GET:CONFIDENTIAL") ")
我不知道爲什麼會這樣以及如何修復它。我應該注意的是,只有在使用第一個引擎EJB時,JSF頁面不起作用。應用程序的其他部分(如Web服務)與兩個引擎完美協同工作。在此先感謝您的幫助。
我按照網絡上的一些鏈接建議的方式做了取消部署/部署。沒有運氣。 –