Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.io.StreamCorruptedException:在不同JVM之间通信时出现意外的块结束数据_Java_Ejb 2.x - Fatal编程技术网

java.io.StreamCorruptedException:在不同JVM之间通信时出现意外的块结束数据

java.io.StreamCorruptedException:在不同JVM之间通信时出现意外的块结束数据,java,ejb-2.x,Java,Ejb 2.x,我有一个EJB客户端和一个运行在JBoss4服务器上的EJB2服务器。对于相同的JVM版本1.6,它运行良好。然后我将客户机JVM升级到1.7,但编译器版本是1.6,同时保持服务器JVM与1.6相同。 java.io.StreamCorruptedException:如果服务器方法返回对象或抛出exeption,则客户端会发生意外的块结束数据错误。但是服务器端功能执行时没有任何错误。此服务器模块中的所有方法调用都会发生这种情况。但是还有一些其他的服务器模块可以毫无例外地工作。对这个问题有什么想法

我有一个EJB客户端和一个运行在JBoss4服务器上的EJB2服务器。对于相同的JVM版本1.6,它运行良好。然后我将客户机JVM升级到1.7,但编译器版本是1.6,同时保持服务器JVM与1.6相同。 java.io.StreamCorruptedException:如果服务器方法返回对象或抛出exeption,则客户端会发生意外的块结束数据错误。但是服务器端功能执行时没有任何错误。此服务器模块中的所有方法调用都会发生这种情况。但是还有一些其他的服务器模块可以毫无例外地工作。对这个问题有什么想法吗

编辑:-
如果返回类型是新创建的类,那么它工作正常

我遇到了这个问题,现在就这样做了:

import org.apache.commons.io.IOUtils;

    byte[] bytes;
    try {
        bytes = IOUtils.toByteArray(uploadedFile.getInputstream());
        image.setContent(bytes);
        imageService.save(image);
    } catch (IOException ex) {
        ...
    }

您最有可能使用Java序列化进行客户端和服务器之间的通信

为了使Java序列化能够正确工作,客户端和服务器都需要具有类文件的兼容版本。我还认为Java并没有保证序列化类型在版本之间兼容,但我现在找不到任何相关文档

当您有不同版本的Java时,很可能某些类具有不同的结构,例如Exception的Throwable超类,它在Java7中有新的字段SuppressedException。通常,序列化尝试为此抛出有意义的异常,但在某些情况下,它可能无法这样做,而只抛出StreamCorruptedException