在我的spring boot 2.0应用程序中,我让主应用程序侦听端口1234,我希望管理服务器在1235上运行 .
所以在我的配置文件中,我设置:
management.server.port=1235
我的服务器无法启动,出现此错误:
[错误] 2018-11-14 05:20:14.958 [main] SpringApplication - 应用程序运行失败org.springframework.beans.FatalBeanException:ServletWebServerFactory实现com.my.MyApplication $ 2无法实例化 . 要允许使用单独的管理端口,应使用顶级类或静态内部类来代替org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextFactory.determineServletWebServerFactoryClass(ServletManagementContextFactory.java:77)〜[在org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextFactory.registerServletWebServerFactory(ServletManagementContextFactory.java:64)〜[spring]中的spring-boot-actuator-autoconfigure-2.1.0.RELEASE.jar:2.1.0.RELEASE -boot-actuator-autoconfigure-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextFactory.createManagementContext(ServletManagementContextFactory.java:52)〜[spring- boot-actuator-autoconfigure-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration $ DifferentManagementContextConfiguration.afterSingletonsInstantiated(ManagementContex tAutoConfiguration.java:143)〜[spring-boot-actuator-autoconfigure-2.1.0.RELEASE.jar:2.1.0.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:863 )〜[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE]在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)〜[spring-context-5.1.2 . RELEASE.jar:5.1.2.RELEASE]在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)〜[spring-context-5.1.2.RELEASE.jar:5.1.2.RELEASE] at at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)〜[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] org.springframework.boot.SpringApplication .refresh(SpringApplication.java:775)[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] org.springframework.boot.SpringApplication.refreshContext(S pringApplication.java:397)[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE]在org.springframework.boot.SpringApplication.run(SpringApplication.java:316)[spring-boot-2.1.0 .rELEASE.jar:2.1.0.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at org . springframework.boot.SpringApplication.run(SpringApplication.java:1248)[spring-boot-2.1.0.RELEASE.jar:2.1.0.RELEASE] at com.my.MyApplication.main(EmsApplication.java:51)[main /:?]
如果我删除这个:
@Bean
public TomcatServletWebServerFactory containerFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected void customizeConnector(Connector connector) {
int maxSize = 50000000;
super.customizeConnector(connector);
connector.setMaxPostSize(maxSize);
connector.setMaxSavePostSize(maxSize);
if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSize);
}
}
t
};
}
然后它工作 .
如何解决这个问题呢?
谢谢!
1 回答
你的
TomcatWebServerFactory
子类是一个匿名的内部类 . 它需要是一个静态内部类或顶级类,以便可以实例化它:或者,您可以使用自定义程序而不是子类
TomcatServletWebServerFactory
: