缺省情況下,InputStream未被序列化。如何通過RMI傳遞InputStream來訪問EJB?如何通過RMI傳遞InputStream?
0
A
回答
3
您必須將數據讀入字節數組,或者將數據全部寫入一個數組,或者寫入多個數據(取決於正在讀取的數據的大小),然後將這些字節數組傳遞給RMI。尚未讀取的InputStream不是可以直接傳遞的數據。
3
你不能。想象一下,InputStream從磁盤讀取文件,然後將其作爲方法參數發送給另一臺機器上的JVM上執行的EJB。在另一臺機器上反序列化時,沒有辦法使InputStream有意義。
你需要考慮潛在的問題而不是機制。你需要將InputStream讀入一個可序列化的對象(比如一個byte []數組)並傳遞它。
如果InputStream讀取的內容太大,則需要將其包裝在一個Serializable對象中,傳遞該對象,並讓該Object能夠在另一端創建InputStream(假設它可以)當然 - 否則你必須創建自己的流,這是一個完整的其他問題)。
2
在他的回答@Konstantin寫道:
一個尚未閱讀的InputStream是不是可以直接傳遞數據。
準確!
例如,如果您嘗試爲調用爲「java app </usr/bin/yes」的應用程序序列化System.in
的內容,您會發生什麼? (提示:讀取「man yes」)
如果要跨RMI「傳遞」流,可以通過創建實現Stream API的包裝類來實現,並對原始流對象執行RMI回調讀取或寫入數據。您需要安排流封裝的序列化狀態包含一個執行回調的句柄。
但是,您的客戶端顯式讀取整個流內容並將其作爲字節(或字符)數組或緩衝區傳遞到服務器會更明智。
2
這就像試圖通過電話線發送電話。它沒有任何意義,
相關問題
- 1. 如何通過RMI傳遞InputStream
- 2. 通過RMI傳遞EventListener
- 3. 卸載通過RMI傳遞的類
- 4. 無法通過RMI傳遞文件
- 5. 通過EJB RMI傳遞對象--NullPointerException
- 6. 傳遞客戶信息到RMI服務器通過RMI聽衆
- 7. Java RMI:如何傳遞POJO
- 8. 如何傳遞到InputStream的URL路徑
- 9. 如何將Java InputStream傳遞給Javascript
- 10. 在RMI中通過引用問題傳遞?
- 11. Java RMI - 通過多個客戶端傳遞遠程
- 12. 通過引用傳遞在RMI不返回的ArrayList中
- 13. 通過RMI
- 14. java rmi傳遞ImageIcon對象
- 15. Java RMI - 傳遞對象
- 16. 如何通過插座的InputStream,活動
- 17. JavaScript中 - 如何通過Json傳遞數據通過數據傳遞
- 18. 如果對象通過別名傳遞,您何時通過引用傳遞?
- 19. 如何通過DalSoft.RestClient傳遞憑證?
- 20. 如何通過bindActionCreators傳遞值?
- 21. 如何通過網絡傳遞cv :: Mat?
- 22. 如何通過javascript傳遞選擇值?
- 23. 如何通過postDotificationName對象傳遞NSDictionary:
- 24. 如何通過FancyBox傳遞JavaScript變量?
- 25. 如何通過Jquery傳遞數據?
- 26. Django - 如何通過HttpResponseRedirect傳遞變量
- 27. 如何通過addEventListener傳遞語句?
- 28. 如何通過Url.Action傳遞模型?
- 29. 如何通過角2傳遞枚舉
- 30. 如何通過傳遞參數與MSDeploy
可能重複的[如何發送inputStream對象到Java EJBean?](http://stackoverflow.com/questions/1862914/how-to-send-an-inputstream-object-到Java-EJBean中) – Thilo 2011-01-28 05:15:10