Java Weblogic 12.1.3中未检测到WebApplicationInitializer
我刚刚从weblogic 12.1.2->12.1.3升级,我在让de应用程序工作时遇到了问题 我已经发现了问题所在,我不确定这是一个配置错误的问题,还是weblogic 12.1.3中的一个bug(在12.1.2中,它工作得很好) 在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
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