-1

我在其 SCP 平台中使用 SAP 的单线 Java IDE 上的 tomcat servlet。该代码获取一个包含采购订单数据的 XML 文件,对其进行处理,然后发送 SOAP 调用以在客户端租户中创建采购订单。它还针对租户的数据库运行验证,以确保数据正确、不重复且已满。

当代码运行一个包含一些采购订单的文件时,它在 servlet 上运行良好。当有几十个采购订单要创建时,运行在途中的某个地方停止,我得到一个日志(见下面的完整日志):

2022/02/13 14:01:08 http:代理错误:EOF 2022/02/13 14:01:08 应用程序退出。错误:信号:已杀死,正在重新启动

并且

nmsejb8msf-uploadvendors.cfapps.eu10.hana.ondemand.com - [2022-02-13T13:58:33.733250213Z] “POST >/UploadAP HTTP/1.1”502 0 0 “-”

由此我了解代理服务器从服务器获取 502 导致我的代码失败。

我使用 Unirest 拨打电话。

这是执行实际发布的函数:

private static void postPO(int POID){
    //only send post if PO has items
    if(fullBody.toString().contains("<Item ItemImatListCompleteTransmissionIndicator=\"true\" actionCode=\"01\">")) {
        Unirest.setTimeouts(0, 0);
        try  {
            HttpResponse<String> response = Unirest.post("SOAP service URL")
                    .header("Content-Type", "text/xml")
                    .header("Authorization", "Basic encoded user and pass")
                    .body(fullBody.toString())
                    .asString();
            response.getBody();
            fullBody.setLength(0);
        } catch (UnirestException e) {
            e.printStackTrace();
            System.out.println("\n PO Unirest error\n");
        }
    }else{
        logBuilder.append("PO " + APOneViewPOID.get(POID) + " has no items, PO will not be uploaded\n");
        fullBody.setLength(0);
    }
}

正如我在上面所写的,这在本地运行良好并创建了采购订单。它在 servlet 上运行时失败,并且有很多采购订单要加载(几十个采购订单)。fullbody 包含实际的 SOAP 调用 Body。我怀疑可能会涉及一些超时,但我不确定是哪一个,因为如果它是上传采购订单的数据库的服务器,即使我在本地运行代码也会发生这种情况吗?

4

0 回答 0