Заменить параметр, используя построитель процесса в Java - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь свернуться, используя построитель процессов в моем приложении Spring-boot, похоже, не работает, я пытаюсь заменить определенное значение в curl (определенное в app.properties) значением и запустить curl дляполучить ответ JSON

Это будет читать json-файл контейнера и выберет общедоступный порт, где * частный порт 8080. Если не получен ответ от службы контейнеров или * частный порт 8080 не найден, или общедоступный порт равен нулю, соответствующий *частный порт 8080, а затем 8080 как порт контейнера будет перезаписан

Это приложение для весенней загрузки Java, не уверенное, почему этот код не работает


    @Autowired
    ObjectMapper objectMapper;

    @Value("${container.curlUrl}")
    private String curlUrl;

    @Value("${ipAddress.curlUrl}")
    private String ipAddressUrl;

    private Long defaultContainerPortNumber = 8080L;


    public Long getContainerPort() {
        logger.info("Calling  Container Api");
        Long containerPortNumber = defaultContainerPortNumber;
        String hostName = Constants.EMPTY_STR;
        try {
            hostName = InetAddress.getLocalHost().getHostName();
            logger.info(hostName);
        } catch (UnknownHostException e1) {
            logger.debug("Unable to find host name");
            return containerPortNumber;
        }
        ProcessBuilder process = new ProcessBuilder(curlUrl.replace("{hostname}", hostName).split(" "));
        logger.info(curlUrl);
        Process p;
        StringBuilder containerResponse = new StringBuilder();
        logger.info(containerResponse);
        try {
            p = process.start();
            logger.info(containerResponse);
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null) {
                containerResponse.append(line);
            }
        } catch (IOException e) {
            logger.debug("Error in executing curl request");
            logger.debug(e);
            return containerPortNumber;
        }
        if (containerResponse.length() == Constants.ZERO) {
            logger.debug("No Response returned from CURL request");
            return containerPortNumber;
        }
        logger.info("Curl API response is: {}", containerResponse);
        ContainerPort containerPort = null;
        try {
            containerPort = objectMapper.readValue(containerResponse.toString(), ContainerPort.class);
        } catch (IOException e) {
            logger.debug("Error in parsing curl request response");
            logger.debug(e);
            return containerPortNumber;
        }
        if (null == containerPort || null == containerPort.getNetworkSettings()
                || CollectionUtils.isEmpty(containerPort.getNetworkSettings().getPorts())) {
            logger.debug("Container Api response is empty. So returning default port");
            return containerPortNumber;
        }
        logger.debug("Container Api response: {}", containerPort);
        for (String portBindingKey : containerPort.getNetworkSettings().getPorts().keySet()) {
            if (portBindingKey.equals("8080/tcp")) {
                List<Port> ports = containerPort.getNetworkSettings().getPorts().get(portBindingKey);
                if (CollectionUtils.isEmpty(ports)) {
                    logger.debug("Port response is empty for port 8080");
                    return containerPortNumber;
                }
                for (Port port : ports) {
                    if (null != port.getHostPort()) {
                        containerPortNumber = port.getHostPort();
                        break;
                    }
                }
            }
        }
        logger.debug("Container port is: {}", containerPortNumber);
        return containerPortNumber;
    }```

The result should be a port number corresponding to 8080/tcp ,  
but the curl request itself doesnt run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...