我有一个客户端服务器应用程序使用对象进行通信
当我只从客户端向服务器发送一个对象时,一切正常.
当我尝试在同一个流上一个接一个地发送几个对象时,我得到了
StreamCorruptedException.
Run Code Online (Sandbox Code Playgroud)
有人可以指导我这个错误的原因吗?
客户端写方法
private SecMessage[] send(SecMessage[] msgs)
{
SecMessage result[]=new SecMessage[msgs.length];
Socket s=null;
ObjectOutputStream objOut =null;
ObjectInputStream objIn=null;
try
{
s=new Socket("localhost",12345);
objOut=new ObjectOutputStream( s.getOutputStream());
for (SecMessage msg : msgs)
{
objOut.writeObject(msg);
}
objOut.flush();
objIn=new ObjectInputStream(s.getInputStream());
for (int i=0;i<result.length;i++)
result[i]=(SecMessage)objIn.readObject();
}
catch(java.io.IOException e)
{
alert(IO_ERROR_MSG+"\n"+e.getMessage());
}
catch (ClassNotFoundException e)
{
alert(INTERNAL_ERROR+"\n"+e.getMessage());
}
finally
{
try {objIn.close();} catch (IOException e) {}
try {objOut.close();} catch (IOException e) {}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
服务器读取方法
//in is an inputStream Defined in …Run Code Online (Sandbox Code Playgroud) 我写了一个客户端 - 服务器应用程序,现在我面临一个我不知道如何解决的问题:
这是客户:
try
{
Socket socket = new Socket(ip, port);
ObjectOutputStream ooos = new ObjectOutputStream(socket
.getOutputStream());
SendMessage message = new SendMessage();
message.numDoc = value.numDoc;
message.docFreq = value.docFreq;
message.queryTerms = query;
message.startIndex = startIndex;
message.count = count;
message.multiple = false;
message.ips = null;
message.ports = null;
message.value = true;
message.docFreq = value.docFreq;
message.numDoc = value.numDoc;
ooos.writeObject(message);
ObjectInputStream ois = new ObjectInputStream(socket
.getInputStream());
ComConstants mensajeRecibido;
Object mensajeAux;
String mensa = null;
byte[] by = null;
do
{
mensajeAux = ois.readObject(); …Run Code Online (Sandbox Code Playgroud) 这与 Hibernate:无法反序列化 - 无效流标头有关。
我无法真正利用这些答案,所以我再次创建了这个(也许事情已经发生了一些变化)。
我正在构建一个 SpringBoot 应用程序,这里是我使用的库。
org.springframework.boot:1.5.4.RELEASE
hibernate-core:5.0.12
hibernate-spatial
hibernate-jpa-2.1-api:1.0.0
postgis-jdbc:2.2.1
postgresql:42.1.4
Run Code Online (Sandbox Code Playgroud)
声明我的实体的代码
package be.naturalsciences.tiles.model;
/**
*
* @author michel
*/
import org.postgis.Point;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Entity
@Table(schema = "idod", name = "coordinates")
@XmlRootElement
public class SCoordinates {
@Id
@Basic(optional = false)
@Column(name = "theid")
public Integer id;
@Basic(optional = false)
@Column(name = "latitude")
public BigDecimal latitude;
@Basic(optional = false)
@Column(name = …Run Code Online (Sandbox Code Playgroud) 嗨,当我试图读取blob得到异常。正在发布如何写入DB并获得对DB的友好建议,这导致了太多问题。
ava.io.StreamCorruptedException: invalid stream header: 4920616D
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
at com.jiit.jfx.persistence.TypeHelper.readBlob(TypeHelper.java:137)
at com.jiit.jfx.persistence.TypeHelper.get(TypeHelper.java:84)
at com.jiit.jfx.persistence.dataaccess.OracleSQLQuery.get(OracleSQLQuery.java:116)
at com.jiit.jfx.persistence.dataaccess.OracleSQLQuery.doOperation(OracleSQLQuery.java:65)
at com.jiit.jfx.persistence.dataaccess.AbstractDAO.execute(AbstractDAO.java:181)
at com.jiit.jfx.persistence.dataaccess.AbstractDAO.executeSQL(AbstractDAO.java:208)
at
com.jiit.ngcs.mx.server.model.rail.ASMMessageStore.getASMMessageStore(ASMMessageStore.java:196)
enter code here
Reading BOLB :
public static Blob createBlob(Object serializable) throws PersistenceException{
try {
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutputStream oStream = new ObjectOutputStream(bStream);
oStream.writeObject(serializable);
oStream.flush();
oStream.close();
return createBlob(bStream.toByteArray());
} catch (Exception e) {
throw new PersistenceException(e.getMessage());
}
}
in TypeHelper.java -- > createBlob
private static Object readBlob(int index, ResultSet rs) throws SQLException {
try …Run Code Online (Sandbox Code Playgroud)