PostBufferSize ,默认值 PostBufferSize="64" ,如果PostBufferSize != 0
并且,在一定的时间内,plugin 没有收到response, post请求会被重新发送
参考文档
http://www-01.ibm.com/support/docview.wss?uid=swg21408884
实际遇到的问题:
应用中,会从临时表中读取用户数据,并插入到另一个表中,
如果数据较少,如,3000条,一切正常,但是,当数据量达到上万条时,发现数据被添加了两次
以下是systmeOut.log 中的信息,可以看到,中途请求又被重新发了一次
[10-12-29 15:49:01:287 CST] 00000082 SystemOut O 修改用户成功==第23806行,53976 // 正常插入的数据
[10-12-29 15:49:01:307 CST] 00000082 SystemOut O 修改用户成功==第23807行,53977
[10-12-29 15:49:01:327 CST] 00000082 SystemOut O 修改用户成功==第23808行,53978
[10-12-29 15:49:01:347 CST] 00000082 SystemOut O 修改用户成功==第23809行,53979
[10-12-29 15:49:01:367 CST] 00000082 SystemOut O 修改用户成功==第23810行,53987
...
[10-12-29 15:49:01:381 CST] 00000087 BinaryHeaderN 3 Byte value [POST] matches key: Key: POST Ordinal: 6
[10-12-29 15:49:01:381 CST] 00000087 HttpRequestMe 3 setMethod(v): POST
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 parseTokenExtract: start:5 lim:512 pos:5
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 findTokenLength: [ ] Delimiter_found; len=27
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 Saving token: null len:27 start:5 pos:33 delim:true
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 Saved token [/IdealIMS/importSysUser.app]
[10-12-29 15:49:01:381 CST] 00000087 HttpRequestMe 3 setRequestURL input [/IdealIMS/importSysUser.app]
[10-12-29 15:49:01:381 CST] 00000087 HttpRequestMe 3 setRequestURL: set URI to /IdealIMS/importSysUser.app
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 parseCRLFTokenExtract: start:33 lim:512 pos:33
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 findCRLFTokenLength returning Delimiter_found; len=8
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 Saving token: null len:8 start:33 pos:42 delim:true
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 Saved token [HTTP/1.1]
[10-12-29 15:49:01:381 CST] 00000087 HttpBaseMessa 3 Called setVersion(b): HTTP/1.1
[10-12-29 15:49:01:381 CST] 00000087 HttpBaseMessa 3 setVersion(v): set version to HTTP/1.1
[10-12-29 15:49:01:381 CST] 00000087 GenericMessag 3 parseLine returning true for com.ibm.ws.http.channel.impl.HttpRequestMessageImpl@13011301
[10-12-29 15:49:01:381 CST] 00000087 BNFHeadersImp 3 Parsing headers with input buff: PooledWsByteBufferImpl: ID: 3795 java.nio.DirectByteBuffer[pos=512 lim=1293 cap=8192] Owner Count: 1 From pool: WSByteBufferPool: com.ibm.ws.buffermgmt.impl.WsByteBufferPool@188a188a buffer size: 8192
...
[10-12-29 15:49:02:409 CST] 00000082 SystemOut O 修改用户成功==第23862 行,57598599
[10-12-29 15:49:02:429 CST] 00000082 SystemOut O 修改用户成功==第23863行,57598600
[10-12-29 15:49:02:449 CST] 00000082 SystemOut O 修改用户成功==第23864行,57598601
[10-12-29 15:49:02:461 CST] 00000087 SystemOut O 修改用户成功==第0行,5110432 //数据被第二次插入
[10-12-29 15:49:02:469 CST] 00000082 SystemOut O 修改用户成功==第23865行,57598602
[10-12-29 15:49:02:481 CST] 00000087 SystemOut O 修改用户成功==第1行,5118280
[10-12-29 15:49:02:493 CST] 00000082 SystemOut O 修改用户成功==第23866行,57598603
[10-12-29 15:49:02:501 CST] 00000087 SystemOut O 修改用户成功==第2行,5110342
...
解决方法:
由于数据量太大,需要较长的时间,可以设置 PostBufferSize =0 ,重启IHS
这样 post请求就不会被缓存,因而不会被重新发送