Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Weblogic 12.1.3中未检测到WebApplicationInitializer_Java_Spring_Spring Mvc_Servlet 3.0_Weblogic12c - Fatal编程技术网

Java Weblogic 12.1.3中未检测到WebApplicationInitializer

Java Weblogic 12.1.3中未检测到WebApplicationInitializer,java,spring,spring-mvc,servlet-3.0,weblogic12c,Java,Spring,Spring Mvc,Servlet 3.0,Weblogic12c,我刚刚从weblogic 12.1.2->12.1.3升级,我在让de应用程序工作时遇到了问题 我已经发现了问题所在,我不确定这是一个配置错误的问题,还是weblogic 12.1.3中的一个bug(在12.1.2中,它工作得很好) 在spring-web-3.2.1.快照中有一个类: @HandlesTypes(WebApplicationInitializer.class) public class SpringServletContainerInitializer implements S

我刚刚从weblogic 12.1.2->12.1.3升级,我在让de应用程序工作时遇到了问题

我已经发现了问题所在,我不确定这是一个配置错误的问题,还是weblogic 12.1.3中的一个bug(在12.1.2中,它工作得很好)

spring-web-3.2.1.快照中
有一个类:

@HandlesTypes(WebApplicationInitializer.class)
public class SpringServletContainerInitializer implements ServletContainerInitializer {

    public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
        throws ServletException {

        List<WebApplicationInitializer> initializers = new LinkedList<WebApplicationInitializer>();

        if (webAppInitializerClasses != null) {
            for (Class<?> waiClass : webAppInitializerClasses) {
                // Be defensive: Some servlet containers provide us with invalid classes,
                // no matter what @HandlesTypes says...
                if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) &&
                    WebApplicationInitializer.class.isAssignableFrom(waiClass)) {
                    try {
                        initializers.add((WebApplicationInitializer) waiClass.newInstance());
                    } catch (Throwable ex) {
                        throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex);
                    }
                }
            }
        }

        if (initializers.isEmpty()) {
            servletContext.log("No Spring WebApplicationInitializer types detected on classpath");
            return;
        }

        AnnotationAwareOrderComparator.sort(initializers);
        servletContext.log("Spring WebApplicationInitializers detected on classpath: " + initializers);

        for (WebApplicationInitializer initializer : initializers) {
            initializer.onStartup(servletContext);
        }
    }
}
SpringServletContainerInitializer
接收这两个类,但它接收的是抽象类
AbstractSecurityWebApplicationInitializer
AbstractAnnotationConfigDispatcherServletInitializer
。这就是应用程序未初始化的原因。问题似乎是weblogic在查找
WebApplicationInitializer
时扫描的类。在12.1.2中,相同的方法(和相同的应用程序)接收6个类,其中4个是抽象类(它们属于spring),其中2个是我自己的类

我曾考虑使用web.xml来避免这个问题,但我想解决它。有解决办法吗?谢谢


我不知道升级是否是个好主意。第一天,第一个问题。下个月我能发现什么?

我已经找到了一个解决方案,而且比我想象的更容易。最后,我所做的是强制
SecurityApplicationInitializer
ApplicationInitializer
实现
WebApplicationInitializer
似乎是weblogic中的一个bug您是如何解决这个问题的,当我将implements WebApplicationInitializer添加到AbstractSecurityWebApplicationInitializer类时,我会出现错误ServletContext不得为null
@Order(1)
public class SecurityApplicationInitializer extends AbstractSecurityWebApplicationInitializer

@Order(2)
public class ApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer