Springboot 2.2 ignores server.port property

Thanhpv

New Member
30/3/18
27
6
3
Chào các bạn!

Trong file application.properties mình setup mọi thứ đều làm việc bình thường (ssl, datasource...) nhưng riêng server.port thì Springboot hoàn toàn ignore ( mình chạy embedded tomcat). Mình đã kiểm tra kỹ file, set server.port ở vị trí gần cuối file nên ko thể bị over-written ỏ file. Clean run cũng không được.

Springboot ignore port.PNG


Bạn nào bít tại sao giúp mình với.
 

quydtkt

Administrator
1/11/19
370
36
28
26
Theo như mình vừa tìm hiểu thì khi chạy embedded tomcat, port được sử dụng được cấu hình trong file config của tomcat chứ không phải trong application.properties
 

Thanhpv

New Member
30/3/18
27
6
3
Theo như mình vừa tìm hiểu thì khi chạy embedded tomcat, port được sử dụng được cấu hình trong file config của tomcat chứ không phải trong application.properties
Lạ nhỉ? Springboot embbeded tomcat như / là dependency, tomcat resides ở đâu tùy thuộc vào cách manage local repo của build tool (gradle, maven...) sao lại yêu cầu cấu hình trực tiếp vào embedded tomcat ở local repo nhỉ. Cấu hình thế có thể bị ghi đè về default bất cứ lúc nào!?
Springboot gọi và khởi động tomcat mà?

Như thế nghe có vẻ như không đúng với Springboot cho lắm. Bạn cho mình xin link hướng dẫn đó được không?
 

Joe

Thành viên VIP
21/1/13
2,942
1,303
113
Create an application.properties file under this directory src/main/resources and then define your server.port=8443. To run it:
PHP:
public class CustomContainer implements EmbeddedServletContainerCustomizer {
  public void customize(ConfigurableEmbeddedServletContainer container) {
     containner.setPort(8443);
  }
}
Or run it directly as a JAVA man:
Code:
C:\mysever>java -Dserver.port=8443 -jar myJar.jar
 
  • Like
Reactions: Thanhpv

Thanhpv

New Member
30/3/18
27
6
3
Create an application.properties file under this directory src/main/resources and then define your server.port=8443. To run it:
PHP:
public class CustomContainer implements EmbeddedServletContainerCustomizer {
  public void customize(ConfigurableEmbeddedServletContainer container) {
     containner.setPort(8443);
  }
}
Or run it directly as a JAVA man:
Code:
C:\mysever>java -Dserver.port=8443 -jar myJar.jar
Thanks for your reply. It gave me the hint. Your solution is for versions prior to Springboot 2.

It turns out that because I did not read the docs :D.

It seems that Sspringboot does not do that for us via configuration file.

Similar concept of customization of servlet container. This is one solution for Springboot 2:

Code:
@Value("${server.port}") //wire port var
private int serverPort;

@Component
public class CustomContainer implements
        WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
            factory.setPort(serverPort);
    }
}
 

quydtkt

Administrator
1/11/19
370
36
28
26
Lạ nhỉ? Springboot embbeded tomcat như / là dependency, tomcat resides ở đâu tùy thuộc vào cách manage local repo của build tool (gradle, maven...) sao lại yêu cầu cấu hình trực tiếp vào embedded tomcat ở local repo nhỉ. Cấu hình thế có thể bị ghi đè về default bất cứ lúc nào!?
Springboot gọi và khởi động tomcat mà?

Như thế nghe có vẻ như không đúng với Springboot cho lắm. Bạn cho mình xin link hướng dẫn đó được không?
Có lẽ do mình hiểu nhầm
Bạn thử cái này xem sao: https://stackoverflow.com/questions/34874357/spring-boot-not-overriding-server-port-property
 
  • Like
Reactions: Thanhpv