2012-12-11 91 views
2

我從java應用程序中使用webservice提取大量數據。這些數據在結構上有點複雜,並且使用數組集合有很多分層模式。我正在經歷15秒左右的巨大性能問題(在jboss和WebSphere中)來加載數據。大部分時間將服務數據轉換爲彈性對象結構。轉移到Weblogic應用程序服務器時,問題變得更加嚴重。我正在使用axis2框架。Flex webservice巨大的性能問題

有什麼辦法來優化這個嗎?我可以用什麼替代技術代替webserivces?

回答

3

恐怕你可能不喜歡我的回答,因爲它會涉及很多重構。我想不出任何簡單的修復。

什麼可以替代技術,我可以使用,而不是webserivces?

通過使用AMF遠程代替Web服務,您將獲得最佳性能。這裏有一篇文章解釋它是什麼,並且包含一個基準,它會告訴你這可能會減少你的響應時間:http://www.themidnightcoders.com/products/weborb-for-net/developer-den/technical-articles/amf-vs-webservices.html。該基準測試在服務器端使用.Net。它甚至可以用Java服務器工作。

有什麼辦法可以優化這個嗎?

您應該考慮將您傳遞給客戶端的對象重構爲「Data Transfer Objects」(DTO's)。這些是簡單的值對象,只包含客戶端顯示所需的數據。這意味着:將數據從服務器傳輸到客戶端花費的時間更少,花費更多的時間將對象轉換爲ActionScript類。

如何限制涉及的工作?

您可以在服務器端添加一個圖層,它將調用您現有的Web服務,將複雜數據轉換爲簡單的DTO,並通過AMF服務將其傳遞給客戶端。這樣你就可以保持現有代碼的完整性,並且仍然可以獲得顯着的性能提升。

+0

謝謝。我喜歡最後的接近。如果你可以建議我使用AMF的一些例子,這將會有所幫助。同時告訴我是否可以使用BlazeDS或[SPRING FLEX](http://www.springsource.org/spring-flex) – Saju

+0

如果您想要進行AMF序列化,您將需要使用BlazeDS(或者GraniteDS)。一些資源:http://sourceforge.net/adobe/blazeds/wiki/BlazeDS%204.0%20Installation%20Guide/,http://www.adobe.com/devnet/livecycle/articles/blazeds_testdrive.html。我不知道Spring Flex,因爲我從來沒有用過它(因爲我從來沒有真正看到這麼做的意義:你可以像使用Spring一樣使用BlazeDS;但是我可能會錯過某些東西)。 – RIAstar