部署到应用服务器后获取 404 但不是本地
Getting 404 after deploying to app server but not locally
我正在使用 Spring @RestController 构建 Web 服务。在本地测试时,一切正常。但是,将应用程序部署到远程应用程序服务器后,我在访问同一端点时收到 404 返回。这是我的代码:
@RestController
public class HelloRestController
{
@RequestMapping( value = "/hello", method = RequestMethod.GET )
public String hello()
{
return "hello";
}
}
这是我的 Web 应用程序初始化程序。注意:我没有 web.xml 文件。
public class MyApplicationInitializer implements WebApplicationInitializer
{
@Override
public void onStartup( ServletContext servletContext ) throws ServletException
{
AnnotationConfigWebApplicationContext ctx =
new AnnotationConfigWebApplicationContext();
servletContext.addListener( new ContextLoaderListener( ctx ) );
ctx.register( WebApplicationConfig.class, ApplicationConfig.class );
ctx.setServletContext( servletContext );
Dynamic dispatcher =
servletContext.addServlet( "SpringServlet", new DispatcherServlet( ctx ) );
dispatcher.addMapping( "/" );
dispatcher.setLoadOnStartup( 1 );
}
}
当我将应用本地部署到 Tomcat-8.0.15 并点击 "localhost:8080/myApp/hello" 时,它 returns "hello"。但是,在将应用程序部署到远程应用程序服务器(也是 Tomcat 8)之后,我在尝试访问同一端点时返回 404。
在此先感谢您的帮助!
代码看起来不错。仔细检查是否有任何与环境相关的问题会导致 spring 的 bean 初始化失败——这将导致调度程序 servlet 失败,从而导致 404。常见问题可能是数据库连接被拒绝,类路径冲突,远程应用服务器和本地的 JVM 差异。
您应该能够找到一些 tomcat 日志,以查明远程服务器是否存在任何问题。
我正在使用 Spring @RestController 构建 Web 服务。在本地测试时,一切正常。但是,将应用程序部署到远程应用程序服务器后,我在访问同一端点时收到 404 返回。这是我的代码:
@RestController
public class HelloRestController
{
@RequestMapping( value = "/hello", method = RequestMethod.GET )
public String hello()
{
return "hello";
}
}
这是我的 Web 应用程序初始化程序。注意:我没有 web.xml 文件。
public class MyApplicationInitializer implements WebApplicationInitializer
{
@Override
public void onStartup( ServletContext servletContext ) throws ServletException
{
AnnotationConfigWebApplicationContext ctx =
new AnnotationConfigWebApplicationContext();
servletContext.addListener( new ContextLoaderListener( ctx ) );
ctx.register( WebApplicationConfig.class, ApplicationConfig.class );
ctx.setServletContext( servletContext );
Dynamic dispatcher =
servletContext.addServlet( "SpringServlet", new DispatcherServlet( ctx ) );
dispatcher.addMapping( "/" );
dispatcher.setLoadOnStartup( 1 );
}
}
当我将应用本地部署到 Tomcat-8.0.15 并点击 "localhost:8080/myApp/hello" 时,它 returns "hello"。但是,在将应用程序部署到远程应用程序服务器(也是 Tomcat 8)之后,我在尝试访问同一端点时返回 404。
在此先感谢您的帮助!
代码看起来不错。仔细检查是否有任何与环境相关的问题会导致 spring 的 bean 初始化失败——这将导致调度程序 servlet 失败,从而导致 404。常见问题可能是数据库连接被拒绝,类路径冲突,远程应用服务器和本地的 JVM 差异。
您应该能够找到一些 tomcat 日志,以查明远程服务器是否存在任何问题。