2011-10-26 86 views
0

我是Spring-Batch的新手,我想用它來批量使用舊版庫的一些作業。該庫有缺點:使用彈簧批次時分叉JVM

  • 是不是線程安全的
  • 在圖書館一排不能處理多個任務的某些對象(由於封閉的單靜態實例)的實例。

因此,似乎唯一的解決方案是爲每個作業分配JVM。

我的問題是:我如何使用spring-batch來做到這一點?文檔中的大多數解決方案都是面向線程的。

+0

你如何運行與春季批量管理員的工作?命令行? –

+0

@MichaelLange我使用我的主程序中的Spring Batch API。 – Kartoch

回答

2

「fork JVM」 - 你會怎麼做?完全啓動一個新流程?但是,這不會真正「分叉」JVM - 意味着需要複製到「子」JVM的任何狀態信息都必須手動完成。 不知怎的,爲每個工作使用不同的類加載器?

+0

是的你是對的:我不知道JVM不是「libc-like」分叉的。類加載器似乎是一個很好的解決方案,但由於多個靜態元素沒有被垃圾收集器清除,所以我害怕面對'PermGenSpace'錯誤... – Kartoch

+0

這是我們在開發過程中遇到的與Tomcat相關的事情,當我們重新部署應用程序時很多時候沒有重新啓動服務器。然後看到這些JVM標誌「CMSClassUnloadingEnabled」和「CMSPermGenSweepingEnabled」。但是到了這個時候,人們可能會想到用其他東西替換舊式庫。 –

+0

不幸的是我們不得不面對它:我們目前無法替換這個庫 – Kartoch