我有一個資源處理程序需要訪問在對話範圍內工作的較低級別的bean。我們的應用程序允許在同一瀏覽器會話中使用不同瀏覽器標籤上的多個登錄會話,方法是將登錄詳細信息保留在此範圍內 - 因此數據庫訪問(我的資源處理程序)需要登錄引用該會話的會話。JSF中的資源處理程序中的對話範圍?
我試過期待它的工作,即使使用ExternalContext.encodeRedirectUrl()來嘗試使Faces包含任何它需要的東西。
我已經試過明確地把?CID參數到我的請求路徑,所以我訪問
/myapp/javax.faces.resource/thumbnail_3963075518712822225212162218.png.xhtml?ln=com.myapp.attachment&cid=1
沒有對話出現在資源處理程序。
而且如果我試圖測試這個使用Conversation.isTransient()我得到一個
javax.enterprise.context.ContextNotActiveException: Conversation Context not active when method called on conversation Transient conversation
(不過我認爲談話總是意味着活躍,併爲上述堆棧跟蹤不包括org.jboss.weld.servlet.ConversationPropagationFilter
我希望這是不是與錯誤https://issues.jboss.org/browse/JBSEAM-3689做 - !「!不要用對話」爲它的解決方法是
有沒有更好的?
感謝 - 理查德
我們會嘗試,並發現它減緩我們失望了很多。也許是另一個問題我們有一些相當大的罐子 - 自動生成的服務存根和DTO,用於我們遺留應用服務器的數千個類。他們沒有beans.xml。我們使用CDI擴展來手動註冊服務接口。當我們啓用Seam Faces時,我們仍然發現巨大的減速。 (這在JBoss 7.0.1中) 我現在的想法是編碼解決問題,儘量避免它。我有一個等同於會話級別的用戶和密碼。我可以在請求中編碼分區(登錄的第三部分)。 –
緩慢問題很有意思,您是否介意爲我們創建一個JIRA,並提供儘可能多的信息,以便您提供給我們? – LightGuard
我將不得不看看我能得到什麼 - 建立一個可以重新啓用它的環境。 –