JavaEE應用程序必須處理大量PDF文檔。 這種處理並不重要,但爲了清晰起見,我們可以說它包括提取文本,將頁面轉換爲圖像,在第一頁上打印ID,打印並將其保存到數據庫。在JavaEE應用程序中處理PDF
傳入PDF來自各種各樣的供應商,所以對它們的控制很少(如果有的話)。
所有操作都發生在後臺,即有定時器輪詢入站通道,檢索文檔並將它們發送到處理。沒有用戶交互。
兩個頂級java庫用於管理PDF。由於PDF規範的擴展和PDF生成工具之間的極端普及,它們不可能涵蓋每個可能的缺陷,因此有時它們無法操縱甚至打開文檔。
很不幸,它們有時會失敗,但不會引發異常,而會阻塞在無限的子方法中。這很關鍵,因爲輪詢計時器阻止了,沒有更多的文檔被處理,管理員意識到某些錯誤太晚了,更糟糕的是整個應用服務器必須重新啓動,這在生產環境中並不容易/不公平。
那麼驅動庫的EJB如何理解該調用被阻塞並停止事務呢?
我可以啓動一個專用線程(不會破壞JavaEE規範)並設置超時等待。當檢查標誌或達到超時時,等待結束。在後一種情況下,該線程被視爲被阻止,PDF可被標記爲無效,並且例如可發送電子郵件警報。
有沒有人看到任何替代和可行的解決方案?
感謝
不好意思回到這麼晚了,但最終我選擇了MDB/JMS實現。 – prepetti