0

我使用的服务器:Websphere

我正在尝试上传电子表格。java 代码逻辑使用 org.apache.poi.ss.usermodel,我从 excel 中获取一张工作表并遍历行。

 Sheet sheet = wb.getSheetAt(0);
 Iterator rows = sheet.rowIterator();

我在每个单元格上都有验证逻辑。然后我调用数据库来存储所有的值。

当电子表格很小时,这很有效。但是,当它很大(超过 1000 条记录)时,我会收到以下错误:

Server Error

Access Manager WebSEAL could not complete your request due to an unexpected error. 

Diagnostic Information

Method: POST

URL: /acx/myApp/xlImport

Error Code: 0x38cf04d3

Error Text: DPWWA1235E Could not read the response status line sent by a third-party server. Possible causes: non-spec HTTP headers, connection timeout, no data returned. This is not a problem with the WebSEAL server. 

Solution
 Provide your System Administrator with the above information to assist in troubleshooting the problem. 
4

1 回答 1

2

我怀疑响应时间比 WebSEAL 的http-timeout(或https-timeout)长。版本 9 上的默认值似乎是 120 秒:

https://www.ibm.com/support/knowledgecenter/SSPREK_9.0.0/com.ibm.isam.doc/wrp_config/reference/ref_other_wb_timeout.html

如果您可以增加该值,即使只是针对您的特定路口,这可能是您的选择。

但是,如果处理时间越来越长,对于较大的文件,您可能需要考虑更改编程模型。快速接受文件,异步进行验证,然后有一个“结果”页面/URL,您可以稍后在其中查看完成状态。

这是我们为非常相似的场景所做的,上传电子表格并对其进行验证。在我们的例子中,我们使用了 MDB,因为这是几年前的 Java EE 标准方法。今天,我们可能会使用 anExecutorService来代替。

如果该选项不可接受或不吸引人,您也许可以实现一些东西,在您进行时定期将数据位写回响应流。但我不知道这是否会阻止 WebSEAL 连接超时。

于 2018-04-04T22:05:04.997 回答