2011-07-20 16 views
3

CXF JAX-RS應用程序我使用jackson將POJO編組爲JSON。這在很大程度上是有效的,但有一天它在編組深度嵌套對象時失敗了。如何處理Glassfish包含的libs與應用程序提供的庫崩潰?

經過一番調查後,我發現傑克遜被納入Glassfish 3(通過澤西島),並刪除jackson-core-asl.jar, jackson-jaxrs.jar, jackson-mapper-asl.jarjackson-xc.jar後,一切都很好。我猜傑克遜1.7.1(包含在GF3中)有一些bug在我的應用程序(1.8)附帶的版本中得到修復。

現在的問題是,爲什麼我甚至必須首先做到這一點?我以爲我的戰爭文件中包含的庫應該優先考慮Glassfish的/modules目錄中的任何庫。

是否有比清除應用程序服務器中的jar更簡單的方法?也許有依賴於這些罐子其他應用程序...

在一個側面說明,問題還是我們的GF2容器存在,但我找不到在/lib文件夾的任何傑克遜庫(有沒有像/modules文件夾在GF3中)。任何關於傑克遜可能隱藏在GF2中的線索(如果有的話)?

+0

你好,能否請您分享您是如何配置傑克遜在玻璃魚3?我試圖用傑克遜而不是拋棄,沒有成功。任何幫助表示讚賞。 – lili

+0

配置?我不太清楚你的意思。沒有配置。只需將你需要的共享庫放到/ lib文件夾中即可。 如果你用Maven構建你的程序再依賴關係部分,你應該有這樣的:! org.jackson 傑克遜核心 YourVersion 提供< - 只要說的容器(Glassfish)將提供它,而不是將它包裝在你的戰爭中 - > – oligofren

+0

Glassfish 3.1帶有拋棄和傑克遜;拋棄是默認選擇的。我不知道你是如何配置它與傑克遜一起工作 – lili

回答

0

如果您可能正在運行Jersey或與Hadoop系統交互,Jersey包含Jersey和Hadoop;並且包含的​​版本通常是舊的。所以這可能是「古傑克遜」問題的一個來源。

+0

我意識到這一點,但爲什麼這應該影響我?我不使用Jersey(我使用CXF JAX-RS)或Hadoop。我有點不確定你正在回答的問題的哪一部分:) – oligofren

+0

只是建議如果你在玻璃魚上運行澤西島;或服務本身與hadoop(這需要他們的重量級客戶端)進行交互,這可能是舊傑克遜版本的載體。排除可能性,因爲這些都是我聽說過的常見問題。但聽起來不適用於你的情況。 – StaxMan

相關問題