我正在使用OAuth2创建一个Springboot应用程序,这意味着我需要能够解析一个login.jsp文件供用户登录。这一切都在本地工作但在EB上我为所有JSP目标获得404s。 OAuth端点在EB上工作正常,我仍然可以手动请求令牌,但是所有要求用户登录的请求都会产生以下网页:
There was an unexpected error (type=Not Found, status=404).
/WEB-INF/views/login.jsp
查看调试日志后,日志中唯一的区别是以下内容,对我而言似乎暗示EB上的路径不再有效,而且找不到我所在的src / main / webapp把WEB-INF / views / login.jsp
放进去在localhost上:
2017-01-17 23:50:15.406 DEBUG 11872 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Code archive: /home/cillian/workspace/CogTracker/target/CogTracker-0.0.1-SNAPSHOT.jar
2017-01-17 23:50:15.407 DEBUG 11872 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Code archive: /home/cillian/workspace/CogTracker/target/CogTracker-0.0.1-SNAPSHOT.jar
2017-01-17 23:50:15.407 DEBUG 11872 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Document root: /home/cillian/workspace/CogTracker/src/main/webapp
在AWS ElasticBeanstalk上:
2017-01-17 23:23:12.438 DEBUG 1065 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Code archive: /var/app/current/application.jar
2017-01-17 23:23:12.440 DEBUG 1065 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Code archive: /var/app/current/application.jar
2017-01-17 23:23:12.441 DEBUG 1065 --- [ main] .t.TomcatEmbeddedServletContainerFactory : None of the document roots [src/main/webapp, public, static] point to a directory and will be ignored.
所以问题是,上传到EB是否要求文件位于不同的位置? ServletContext是否需要特定的参数才能在EB上找到文件?
参考我的WebApplicationInitializer类
public class DispatcherServletInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.scan("uk.ac");
servletContext.addListener(new ContextLoaderListener(context));
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
}
和我的WebMvcConfigurerAdapter:
@Configuration
@EnableWebMvc
public class AppConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
configurer.enable();
}
@Override
public void addViewControllers(final ViewControllerRegistry registry){
super.addViewControllers(registry);
registry.addViewController("/login.html");
registry.addViewController("/welcome.html");
}
@Bean
public InternalResourceViewResolver viewResolver(){
final InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setViewClass(JstlView.class);
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}