最近我發現使用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. Angular 2和Spring Boot - 部署到戰爭
- 5. Spring Rest Controllers:部署到Tomcat
- 6. Spring Boot - 部署到Tomcat時將屬性文件放在哪裏?
- 7. 將Spring Boot應用程序部署到Tomcat 8
- 8. 部署外部Tomcat和SAP連接
- 9. 將Spring Boot部署到Wildfly 10
- 10. Spring Boot YARN如何部署到Hadoop
- 11. Spring Roo 2.0.RC1 - 構建wariv Archiv並在外部Tomcat中部署
- 12. 如何將外部屬性文件位置添加到部署到tomcat 6的Spring Boot應用程序?
- 13. 無法將Java Spring webapp部署到Tomcat
- 14. Java Spring Boot - 不會在Tomcat上部署的war文件Apache
- 15. 在tomcat上部署Togglz Spring Boot時出錯
- 16. 在tomcat中部署WAR
- 17. Maven部署到Tomcat
- 18. Tomcat中的Spring Boot文件的外部化配置
- 19. 如何將Spring Boot應用程序部署到Tomcat上的不同URL?
- 20. Maven + Tomcat熱部署
- 21. Java Spring Boot外部日誌文件jar
- 22. spring-boot外部配置整個類
- 23. Spring Boot:外部配置導致空值
- 24. 在tomcat 5.5問題中的Spring部署
- 25. 在Tomcat中部署Spring MVC + Maven 7
- 26. 針對JMS + tomcat + spring的典型部署
- 27. tomcat war部署
- 28. Tomcat部署
- 29. Apache Tomcat部署
- 30. 用於戰爭部署的外部和內部資源,例如Tomcat