日期:2014-05-18  浏览次数:20611 次

朋友么帮帮忙啊 (在线)
jdk 默认io 通道 改变nio 
不能明白这个怎么处理:
————————————————
1.打开管理控制台,找到并选择运行这个JSP的应用服务器 
2.依次选择进程定义,java虚拟机,一般JVM自变量 
3.添加-Dibm.stream.nio=true 
————————————————
那位大侠帮忙解释一下??


------解决方案--------------------
是IBM的websphere发生MalformedInputException异常时的解决方法.在网上给你找了一篇文章.你看看嘛:


websphere 服务器发出的异常:

sun.io.MalformedInputException
at sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java:178)
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java:247)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java:297)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at com.xgll.transfer.request.RequestInterface.doFilter(RequestInterface.java:194)
at com.xgll.transfer.request.RequestInterface.doRequest(RequestInterface.java:136)
at com.xgll.transfer.request.RequestInterface.run(RequestInterface.java:98)
at java.lang.Thread.run(Thread.java:536) 

这个错误的原因:

由于sun.io.ByteToCharGB18030.convert(ByteToCharGB18030.java)在 websphere 平台读取文件时,文件内容含有非中文字符(例如日文等),会报此错误。这个问题产生的原因是IBM在JDK 1.4版本中为了追求对io通道的高效率改变了JDK 1.3中对io通道中异常处理的策略。IBM JDK 1.4中对于io通道的异常处理更加严格,因此系统中会报上面的错误。

这个错误的解决方法:

解决这一问题的办法是不使用IBM JDK 1.4中默认的io通道,而使用nio通道。具体解决步骤: 1.打开管理控制台,找到并选择运行这个JSP的应用服务器;2.依次选择进程定义,java虚拟机,一般JVM自变量;3.添加- Dibm.stream.nio=true ;4.确定,保存;5.重新启动该服务器 我试过,ok了。