在初始化bean之前测试是否正在使用端口

时间:2017-06-30 16:14:53

标签: java spring spring-boot

我正在使用Spring Boot并且有一个初始化EmbeddedServletContainerCustomizer的bean。我有一个属性文件,其中用户提供要绑定的端口和IP地址(因此需要EmbeddedServletContainerCustomizer,因为该端口不是Spring引导使用的默认端口)。在初始化此bean之前,如何测试地址和端口组合是否已在使用?我无法在此bean中创建ServerSocket。我希望有一种优雅的方法来捕获此异常并记录它。在使用port / ip组合的情况下,Spring将使用堆栈跟踪关闭。

    @Bean
public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() throws UnknownHostException {
    EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer = null;

    embeddedServletContainerCustomizer = new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            container.setPort(port);
            container.setAddress(inetAddress);
        }
    };

    return embeddedServletContainerCustomizer;
}

1 个答案:

答案 0 :(得分:1)

您可以使用Spring SocketUtils 例如

   <HTML XMLns="http://www.w3.org/1999/xHTML"> 
    <head> 
    <title>Check for perfect palindrome</title>
    </head> 
    <body>
    <?php
    $string = "";
    if(isset($_POST['stringInput']))
    {
        $string = $_POST['stringInput'];

        if ($string =="")
        {
            echo "Please fill the form";
        } else if ($string == strrev($string) )
        {
            echo "You entered: <b>'$string'</b> is a perfect palindrome.";
        } else 
        {
            echo "You entered: <b>'$string'</b> is NOT a perfect palindrome.";
        }
    }
    ?>

         <h1>Check for perfect palindrome</h1>
        <form method="post">
         <label for="stringInput">String:</label><input type="text" id="stringInput" name="stringInput" value="<?php echo $_REQUEST['stringInput'];?>"><br/>
         <br/><input type="submit" name="submit" value="Check" />
        </form>
    </body> 

    </HTML>