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

java.io.IOException: Stream closed

多个线程索引同一个input  stream,当某一个thread在执行完之后,把这个inputstream关闭了;而此时正在从这个input  stream流中读取信息的线程就会抛出  java.io.IOException:  Stream  closed  异常。

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

修改前代码:

public Object sendData(String jsonStr) {

		// 1. 指定WebService的命名空间和调用的方法名
		SoapObject rpc = new SoapObject(NAMESPACE, methodName);
		// 2. 设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步
		rpc.addProperty("arg000", jsonStr);
		// 3. 生成调用WebService方法的SOAP请求信息。
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		envelope.encodingStyle = "UTF-8";
		envelope.bodyOut = rpc;
		// envelope.setOutputSoapObject(rpc);
		// 4.
		// 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL
		HttpTransportSE ht = new HttpTransportSE(URL);
		ht.debug = true;

		Object detail1 = null;

		try {
			// 5. 使用call方法调用WebService方法
			ht.call(null, envelope);
			// detail = (SoapObject) envelope.getResponse();
			// 6. 使用getResponse方法获得WebService方法的返回结果
			detail1 = envelope.getResponse();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return detail1;
	}

修改后代码:

public Object sendData(String jsonStr) {

		// 1. 指定WebService的命名空间和调用的方法名
		SoapObject rpc = new SoapObject(NAMESPACE, methodName);
		// 2. 设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步
		rpc.addProperty("arg000", jsonStr);
		// 3. 生成调用WebService方法的SOAP请求信息。
		SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
				SoapEnvelope.VER11);
		envelope.encodingStyle = "UTF-8";
		envelope.bodyOut = rpc;
		// envelope.setOutputSoapObject(rpc);
		// 4.
		// 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL
		HttpTransportSE ht = new HttpTransportSE(URL);
		ht.debug = true;

		Object detail1 = null;

		try {
			// 5. 使用call方法调用WebService方法
			ht.call(null, envelope);
			// detail = (SoapObject) envelope.getResponse();
			// 6. 使用getResponse方法获得WebService方法的返回结果
			detail1 = envelope.getResponse();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(new java.util.Date() + "IOException, resend the data");
			try {
			// 5. 使用call方法调用WebService方法
				ht.call(null, envelope);
			// detail = (SoapObject) envelope.getResponse();
			// 6. 使用getResponse方法获得WebService方法的返回结果
			detail1 = envelope.getResponse();
			} catch (IOException e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			} catch (XmlPullParserException e1) {
				// TODO 自动生成的 catch 块
				e1.printStackTrace();
			}
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return detail1;
	}
时间: 2024-10-13 18:59:11

java.io.IOException: Stream closed 异常的原因和处理的相关文章

jsp报错java.io.IOException: Stream closed

在使用jsp的时候莫名其妙的抛出了这个异常,经过反复检查 去掉了网友们说的jsp使用流未关闭,以及tomcat版本冲突等原因,最后发现是书写格式的原因. 当时使用的代码如下 <jsp:include page="/WEB-INF/view/edu/common/pagination.jsp "></jsp:include>   原因就是page值的末尾多了一个空格.去掉即可 原文地址:https://www.cnblogs.com/fanwenhao/p/839

Java导出Excel,java.io.IOException: Stream is already closed

使用POI进行Excel导出的时候,后台报了这样一个错误: java.io.IOException: Stream is already closed 导出的代码如下: 查了半天,才发现问题出在第409行 out.close(); out这个输出流是不用自己手动关闭的,系统会自动替我们关闭,自己手动关闭的话还会引发问题. 实际上只有像下面这种使用new关键字创建的输入/输出流,才需要自己手动关闭 InputStream input = new FileInputStream(new File("

hive使用python脚本导致java.io.IOException: Broken pipe异常退出

反垃圾rd那边有一个hql,在执行过程中出现错误退出,报java.io.IOException: Broken pipe异常,hql中使用到了python脚本,hql和python脚本近期没有人改过,在10.1号时还运行正常,但是在10.4号之后运行就老是出现相同的错误,而且错误出现在stage-2的reduce阶段,gateway上面的错误提示如下: 2014-10-10 15:05:32,724 Stage-2 map = 100%, reduce = 100% Ended Job = jo

[Nutch]问题解决:Exception in thread &quot;main&quot; java.io.IOException: Job failed

1. 问题描述 在运行Nutch的时候会出现如下异常: Exception in thread "main" java.io.IOException: Job failed! 2. 问题原因 nutch-default.xml中的plugin.folders的配置问题. 3. 问题解决 在配置plugin目录的时候,一定要使用绝对路径. <property> <name>plugin.folders</name> <value>C:/Nu

hadoop错误Ignoring exception during close for [email&#160;protected] java.io.IOException Spill failed

1.错误    Ignoring exception during close for [email protected] java.io.IOException: Spill failed2.原因     本地磁盘空间不足非hdfs (我是在myeclipse中调试程序,本地tmp目录占满)3.解决     清理.增加空间 如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的[推荐]. 如果,您希望更容易地发现我的新博客,不妨点击一下左下角的[关注我]. 如果,您对我的博客所讲述的内容有

java.io.IOException: Attempted read from closed stream

代码如下,执行的时候提示“java.io.IOException: Attempted read from closed stream.” @Test public void test_temp(){ String url="http://ssov1.59iedu.com/login?TARGET=http://med.ihbedu.com:80/gateway/web/sso/auth&js&callback=loginThen&1470491151264&no

java.io.IOException: The stream is closed

at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.read(ZipArchiveInputStream.java:362) at java.io.InputStream.read(Unknown Source) at org.apache.commons.compress.utils.IOUtils.copy(IOUtils.java:75) at org.apache.commons.compress.util

java.io.IOException: java.io.EOFException: Unexpected end of input stream错误

报错现象: Diagnostic Messages for this Task:Error: java.io.IOException: java.io.EOFException: Unexpected end of input stream at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121) at

java.io.IOException: read failed, socket might closed or timeout, read ret: -1

近期项目中连接蓝牙之后接收蓝牙设备发出的指令功能,在连接设备之后,创建RfcommSocket连接时候报java.io.IOException: read failed, socket might closed or timeout, read ret: -1错误.以下说一下我的解决方法,希望对各位有一点帮助. private BluetoothSocket mSocket; <span style="white-space:pre"> </span>priva