簡體   English   中英

如何從ejb3會話bean返回很長的列表?

[英]How is it to return a very long list from ejb3 session bean?

我有一個ejb3會話bean和一個servlet。 Bean可以訪問帶有一些大表的數據庫。 Servlet應該從Bean檢索表的內容,並通過ServletOutputStream發送數據。 如何在ejb3 bean和servlet之間傳輸大數據? 我無法一次返回包含所有行的列表,因為它不適合內存。

PS。 數據以文件形式下載。 它們不會出現在頁面上。

您可以使用Externalizable接口(Serializable的擴展)跨EJB邊界傳輸大文件。 這是我的建議:

  1. 編寫一個類,例如ExternalFile ,它包裝/包含一個File對象
  2. 使該類實現可Externalizable
  3. 實現writeExternal將包含的文件寫入給定的輸出流
  4. 實現readExternal以將給定的輸入流讀取到新的臨時文件中
  5. 請考慮在您的ExternalFile類中添加size和name屬性,以幫助接收者確定要做什么(並記住將其寫出並通過writeExternal和readExternal方法讀入)。

步驟3是您從EJB層發送對象(文件)時的序列化階段。 步驟4是您的反序列化階段,該階段將文件作為數據流接收,並且可以對流進行任何處理。 我的4建議將其寫入臨時文件,但您可以將此流直接通過servlet傳遞到任何其他目標。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM