600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java io closed_java.io.IOException: Stream closed 异常的原因和处理

java io closed_java.io.IOException: Stream closed 异常的原因和处理

时间:2019-01-29 08:33:47

相关推荐

java io closed_java.io.IOException: Stream closed 异常的原因和处理

java.io.IOException: Stream closed

多个线程索引同一个inputstream,当某一个thread在执行完之后,把这个inputstream关闭了;而此时正在从这个inputstream流中读取信息的线程就会抛出java.io.IOException:Streamclosed异常。终于找到这个异常的根源所在,原来是两个页面同时调用一个jsp,这个jsp中的内建对象out在执行out.close()时发生的异常,也就是当某一个thread(对应一个jsp)在执行完之后,把这个stream关闭了;而此时正在从这个stream中读取信息的另一个jsp就会抛出java.io.IOException:Streamclosed异常。

修改前代码:publicObjectsendData(StringjsonStr){

//1.指定WebService的命名空间和调用的方法名

SoapObjectrpc=newSoapObject(NAMESPACE,methodName);

//2.设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步

rpc.addProperty("arg000",jsonStr);

//3.生成调用WebService方法的SOAP请求信息。

SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(

SoapEnvelope.VER11);

envelope.encodingStyle="UTF-8";

envelope.bodyOut=rpc;

//envelope.setOutputSoapObject(rpc);

//4.

//创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL

HttpTransportSEht=newHttpTransportSE(URL);

ht.debug=true;

Objectdetail1=null;

try{

//5.使用call方法调用WebService方法

ht.call(null,envelope);

//detail=(SoapObject)envelope.getResponse();

//6.使用getResponse方法获得WebService方法的返回结果

detail1=envelope.getResponse();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(XmlPullParserExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returndetail1;

}

修改后代码:publicObjectsendData(StringjsonStr){

//1.指定WebService的命名空间和调用的方法名

SoapObjectrpc=newSoapObject(NAMESPACE,methodName);

//2.设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步

rpc.addProperty("arg000",jsonStr);

//3.生成调用WebService方法的SOAP请求信息。

SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(

SoapEnvelope.VER11);

envelope.encodingStyle="UTF-8";

envelope.bodyOut=rpc;

//envelope.setOutputSoapObject(rpc);

//4.

//创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL

HttpTransportSEht=newHttpTransportSE(URL);

ht.debug=true;

Objectdetail1=null;

try{

//5.使用call方法调用WebService方法

ht.call(null,envelope);

//detail=(SoapObject)envelope.getResponse();

//6.使用getResponse方法获得WebService方法的返回结果

detail1=envelope.getResponse();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

System.out.println(newjava.util.Date()+"IOException,resendthedata");

try{

//5.使用call方法调用WebService方法

ht.call(null,envelope);

//detail=(SoapObject)envelope.getResponse();

//6.使用getResponse方法获得WebService方法的返回结果

detail1=envelope.getResponse();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}catch(XmlPullParserExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}catch(XmlPullParserExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

returndetail1;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。