缺省情况下,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传递的类
- 3. Java RMI:如何传递POJO
- 4. 如何传递到InputStream的URL路径
- 5. 在RMI中通过引用问题传递?
- 6. 通过引用传递在RMI不返回的ArrayList中
- 7. Java RMI - 通过多个客户端传递远程
- 8. 通过RMI
- 9. Java RMI - 传递对象
- 10. 如何通过插座的InputStream,活动
- 11. 如果对象通过别名传递,您何时通过引用传递?
- 12. JavaScript中 - 如何通过Json传递数据通过数据传递
- 13. 如何通过URL传递JavaScript对象
- 14. 如何通过Android fragmentmanager传递变量
- 15. 如何通过url传递php变量
- 16. 如何通过IBAction传递对象?
- 17. Actionscript - 如何通过值传递对象?
- 18. 如何通过Zend parms传递URL?
- 19. 如何通过AJAX,PHP传递checbox值?
- 20. 如何通过参数传递视图?
- 21. 如何通过WiFi网络传递NSArray?
- 22. 如何通过引用传递Generic :: List?
- 23. .NET如何通过引用传递类?
- 24. 如何通过引用传递结构?
- 25. 如何通过值传递对象?
- 26. 如何通过传递证书
- 27. 我如何传递null通过JavaScript
- 28. 如何通过AJAX传递数据 - Elgg
- 29. 如何不通过URL传递参数?
- 30. 如何通过传递参数
可能重复的[如何发送inputStream对象到Java EJBean?](http://stackoverflow.com/questions/1862914/how-to-send-an-inputstream-object-到Java-EJBean中) – Thilo 2011-01-28 05:15:10