2016-08-22 13 views
1

最近、Spring Bootに付属のServletRegistrationBeanを使用して、自分自身のサーブレットBeanをMVCに追加することができました。しかし、ドキュメントはこれが埋め込みサーブレットコンテナのためだけであることを示唆しているようです:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html 私の簡単な質問は、ServletRegistrationBeanを埋め込みコンテナで使うことができるか、あるいは外部のTomcatに戦争を展開するときですか?Spring Boot ServletRegistrationBeanと外部Tomcatへのデプロイ

答えて

2

ServletRegistrationBeanは、Tomcat(または他のサーブレットコンテナ)にBootアプリケーションをデプロイするとき、Bootが独自のDispatcherServletを登録する方法とまったく同じです。

0

私はSpringブートwarファイルをweblogicにデプロイするときに同様の問題がありました。サーブレットはServlet 3.x Webコンテナのサポートに登録することができます。 weblogicはサーブレットBeanの新しいサーブレットインスタンスインスタンスを作成しようとしています。

@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なく、春のディスパッチャサーブレットに行くようです。

しかし、同じwarファイルをtomcatに配備して、エラーなく実行できることは難しいです。

関連する問題