有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在annotationdriven Spring MVC应用程序中实现大气

我目前遇到了这个错误:java.lang.IllegalStateException: MeteorServlet not defined in web.xml 因为我的Spring项目完全配置了注释,所以我没有web。xml

这是我的配置类:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.musicbox")
public class AppConfig extends WebMvcConfigurerAdapter {


...

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(new AtmosphereArgumentResolver());
    }

}

大气分解器。与我能找到的任何示例相同,但我将一些函数移到了utils类中:

public class AtmosphereArgumentResolver implements HandlerMethodArgumentResolver {

    @Override
    public Object resolveArgument(MethodParameter parameter,
            ModelAndViewContainer mavContainer, NativeWebRequest webRequest,
            WebDataBinderFactory binderFactory) throws Exception {

        return AtmosphereUtils.getAtmosphereResource(webRequest.getNativeRequest(HttpServletRequest.class));
    }

    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return AtmosphereResource.class.isAssignableFrom(parameter.getParameterType());
    }
}

以及相应的utils类别:

public final class AtmosphereUtils {

    public static AtmosphereResource getAtmosphereResource(HttpServletRequest request) {
        return getMeteor(request).getAtmosphereResource();
    }

    public static Meteor getMeteor(HttpServletRequest request) {
        return Meteor.build(request);
    }

...

}

正如我所理解的,我必须为meteor servlet创建一个配置。但我找不到任何例子如何做到这一点。。。至少没有任何注释驱动

编辑: 我现在的问题是,我认为Meteor.build(request)将采用某种默认配置。但看起来,它需要在我的网站上配置。xml(我没有)。如果是这种情况,那么用JavaConfig配置meteor的方法是什么(需要配置什么)

Edit2: 好的,我在启动时添加了MeteroServlet,这使Atmosphere框架在服务器启动时得到初始化(如日志所示),从而使它更进一步

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context));

        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");

        ServletRegistration.Dynamic meteor = servletContext.addServlet("MeteorServlet", new MeteorServlet());
        meteor.setLoadOnStartup(1);
        meteor.addMapping("/meteor");
    }

然而,这个问题仍然存在


共 (0) 个答案