最近我发现使用Spring Boot附带的ServletRegistrationBean将我自己的servlet bean添加到MVC的可能性。但文档似乎表明,这只适用于嵌入式servlet容器:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html 我的一个简单问题是:ServletRegistrationBean只能用于嵌入容器,或者也可以在将战争部署到外部Tomcat时使用?Spring Boot ServletRegistrationBean和部署到外部Tomcat
1
A
回答
2
ServletRegistrationBean
也可以与外部Tomcat一起使用,事实上,当您将引导应用程序部署到Tomcat(或任何其他Servlet容器)时,Boot正是如何注册自己的DispatcherServlet
。
0
在将spring boot war文件部署到weblogic时,我遇到了类似的问题。 Servlet能够在Servlet 3.x Web容器的支持下注册。但weblogic试图创建servlet bean的新servlet实例实例。
@Bean
@ConditionalOnMissingBean
public GraphQLServlet graphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrategyProvider executionStrategyProvider) {
return new SimpleGraphQLServlet(schemaProvider, executionStrategyProvider, objectMapperConfigurer, listeners, instrumentation, errorHandler, contextBuilder, graphQLRootObjectBuilder);
}
@Bean
ServletRegistrationBean graphQLServletRegistrationBean(GraphQLServlet servlet) {
return new ServletRegistrationBean(servlet, graphQLServletProperties.getServletMapping());
}
和WebLogic抛出这样的例外:
<Oct 2, 2017 4:08:31 PM SGT> <Error> <HTTP> <BEA-101125> <[[email protected][app:cpapps-gra3.1]] Error occurred while instantiating servlet: "simpleGraphQLServlet".
java.lang.InstantiationException: graphql.servlet.SimpleGraphQLServlet
at java.lang.Class.newInstance(Class.java:427)
at weblogic.servlet.internal.WebComponentContributor.getNewInstance(WebComponentContributo
at weblogic.servlet.internal.WebComponentContributor.getNewInstance(WebComponentContributo
at weblogic.servlet.internal.WebComponentContributor.createServletInstance(WebComponentCon
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.newServletInstanceIfNece
Truncated. see log file for complete stacktrace
Caused By: java.lang.NoSuchMethodException: graphql.servlet.SimpleGraphQLServlet.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
at weblogic.servlet.internal.WebComponentContributor.getNewInstance(WebComponentContributo
at weblogic.servlet.internal.WebComponentContributor.getNewInstance(WebComponentContributo
at weblogic.servlet.internal.WebComponentContributor.createServletInstance(WebComponentCon
Truncated. see log file for complete stacktrace
>
看来,Web请求直接进入weblogic的,而不是春季调度的servlet。
但是,看到相同的war文件可以在tomcat中部署并运行而没有任何错误是很棘手的。
相关问题
- 1. 如何将spring-boot WAR部署到Tomcat?
- 2. Spring引导部署外部tomcat
- 3. Spring Boot部署 - NoClassDefFoundError
- 4. Spring Rest Controllers:部署到Tomcat
- 5. Spring Boot部署策略
- 6. LifecycleException将Spring Boot WebSocket示例部署到Tomcat中
- 7. Spring Boot - 部署到Tomcat时将属性文件放在哪里?
- 8. 如何将Spring Boot应用程序部署到Tomcat 6 Servlet 2.5
- 9. 将Spring Boot应用程序部署到Tomcat 8
- 10. 部署外部Tomcat和SAP连接
- 11. 将spring-boot jar部署到nexus
- 12. 将Spring Boot部署到Wildfly 10
- 13. Spring Boot YARN如何部署到Hadoop
- 14. Spring Roo 2.0.RC1 - 构建wariv Archiv并在外部Tomcat中部署
- 15. 如何将外部属性文件位置添加到部署到tomcat 6的Spring Boot应用程序?
- 16. Spring引导应用程序 - Tomcat部署
- 17. 无法将Java Spring webapp部署到Tomcat
- 18. Java Spring Boot - 不会在Tomcat上部署的war文件Apache
- 19. 在Tomcat中进行spring-boot war部署失败
- 20. 在tomcat上部署Togglz Spring Boot时出错
- 21. 在tomcat中部署WAR
- 22. Maven部署到Tomcat
- 23. 如何部署spring-boot war给debian jetty8
- 24. Tomcat中的Spring Boot文件的外部化配置
- 25. Spring Boot - 忽略独立Tomcat /外部登录文件
- 26. 如何将Spring Boot应用程序部署到Tomcat上的不同URL?
- 27. Maven + Tomcat热部署
- 28. spring-boot外部配置整个类
- 29. Spring Boot:外部配置导致空值
- 30. Java Spring Boot外部日志文件jar