WAS 8.5.5.2:在类路径上未检测到spring webapplicationinitializer类型

时间:2018-06-21 05:36:53

标签: spring spring-mvc websphere-8

我有一个spring mvc项目。我正在尝试在IBM Websphere 8.5.5.2上部署此项目

我为该项目打了一场仗,并使用管理控制台将其部署在Websphere上

我正在使用基于Java的配置。 我正在使用AbstractAnnotationConfigDispatcherServletInitializer和WebMvcConfigurerAdapter类进行配置。

但是,当我部署应用程序时,会根据控制台得到以下信息:  在类路径上没有检测到spring Webapplicationinitializer类型

并且不会初始化spring初始化。

我的代码如下

@EnableWebMvc
@Configuration
@ComponentScan({ "com.demo" })
public class SpringWebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

public class MyWebInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { SpringWebConfig.class };
    }

}

@Controller
public class HelloController {

    @RequestMapping(value = "/qwerty", method = RequestMethod.GET)
    public String printWelcome() {

        return "qwerty";

    }

}

先谢谢您了:)

2 个答案:

答案 0 :(得分:0)

只是分享我可能对您有帮助的案例。

我也将带有 JSP 的 springmvc servlet 作为前端部署到 IBM WAS 8.5。 我有来自服务器的相同调试信息,但它不影响性能。

我在 servlet.xml 中的 internalViewResolver 和 resourceHandler 设置仍然有效。

[21/4/21 11:11:38:003 SGT] 000000a4 webapp        I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet Message - [BP13BWDbPocWeb_war#BP13BWDbPocWeb.war]:.No Spring WebApplicationInitializer types detected on classpath
[21/4/21 11:11:38:015 SGT] 000000a4 webapp        I com.ibm.ws.webcontainer.webapp.WebApp log SRVE0292I: Servlet Message - [BP13BWDbPocWeb_war#BP13BWDbPocWeb.war]:.Initializing Spring root WebApplicationContext
[21/4/21 11:11:38:016 SGT] 000000a4 ContextLoader I org.springframework.web.context.ContextLoader initWebApplicationContext Root WebApplicationContext: initialization started

答案 1 :(得分:-1)

我的猜测(我尚未尝试过)是您依赖@Configuration和 @ComponentScan({“” com.demo“})可以对Spring应用程序进行注解扫描。当您将应用程序作为war文件运行时,魔术不会发生这种情况。

具体来说,在下面的文档中,您缺少一个SpringBootServletInitializer,它定义了一个configure方法来告诉支持容器它需要扫描哪些类来查找注释:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html#howto-create-a-deployable-war-file

HTH