Wildfly 和 springboot 出现“404 - Not found”错误

Posted

技术标签:

【中文标题】Wildfly 和 springboot 出现“404 - Not found”错误【英文标题】:Getting "404 - Not found" error with Wildfly and springboot 【发布时间】:2018-07-19 21:19:18 【问题描述】:

您好,我正在尝试通过一个使用 Eclipse 的非常简单的应用程序来学习 Wildfly 和 springboot。 项目名称为springboot-test。 包括主方法类在内的所有类都在同一个包中。

主方法类名为“App”,代码如下:

 @SpringBootApplication
 @RestController
 public class App 

    @Autowired
    private Student student;

    public static void main(String[] args) 
        SpringApplication.run(App.class, args);
    

    @RequestMapping("/index")
    public String sayHello()
    
        return "hello from spring boot" + this.student.showAddress();
    

这里是服务器日志:

11:36:57,281 INFO [org.wildfly.extension.undertow] (ServerService 线程池 -- 68) WFLYUT0021: 注册的 web 上下文: '/springboot-test-0.0.1-SNAPSHOT' 用于服务器'default-server '

11:36:57,301 INFO [org.jboss.as.server] (ServerService 线程池 -- 37) WFLYSRV0010: 已部署“springboot-test-0.0.1-SNAPSHOT.war”(运行时名称:“springboot- test-0.0.1-SNAPSHOT.war")

11:36:57,408 INFO [org.jboss.as.server](控制器引导线程)​​WFLYSRV0212:恢复服务器

11:36:57,411 INFO [org.jboss.as](控制器引导线程)​​WFLYSRV0060:Http 管理接口监听http://127.0.0.1:8181/management

11:36:57,412 INFO [org.jboss.as](控制器引导线程)​​WFLYSRV0051:管理控制台正在监听http://127.0.0.1:8181

11:36:57,412 INFO [org.jboss.as](控制器引导线程)​​WFLYSRV0025:WildFly Full 11.0.0.Final(WildFly Core 3.0.8.Final)在 11393 毫秒内启动 - 启动了 732 个服务中的 504 个(353服务是惰性的、被动的或按需的)

我访问的网址是:http://localhost:8080/springboot-test/index

【问题讨论】:

您的项目在独立运行时是否工作(我的意思是,在 Wildfly 之外,使用 Spring Boot 应用程序的默认嵌入式 Tomcat 实例)? 您好,是的,它适用于嵌入式 tomcat。然后我只是通过以下方式访问该页面:localhost:8080/index 你找到解决这个问题的方法了吗? 想想,你面临的同样的问题***.com/a/50038209/1450401 @CharlesMorin 我遇到了同样的问题,这是我的问题***.com/a/50038209/1450401 【参考方案1】:

由于您使用 wildfly 进行部署,我希望您正在生成 war 文件,并且服务器日志似乎支持我的说法

你有 SpringBootServletInitializer 类吗???如果不是这就是问题

你需要这样的东西

@SpringBootApplication
@RestController
public class ServletInitializer extends SpringBootServletInitializer

public static void main(String[] args) 
        SpringApplication.run(ServletInitializer.class, args);
    

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
    return application.sources(ServletInitializer.class);
     

@Override
public void onStartup(ServletContext servletContext) throws ServletException
    super.onStartup(servletContext);

     
@RequestMapping("/index")
public String sayHello()
        return "hello from spring boot" + this.student.showAddress();
    

我不确定在一个类中注释 @SpringBootApplication@RestController 是否有任何问题。但我的建议是分开维护

@RestController
public class Mycontroller

  @RequestMapping("/index")
  public String sayHello()
      return "hello from spring boot" + this.student.showAddress();
  

【讨论】:

【参考方案2】:

您的服务器日志显示:

11:36:57,281 信息 [org.wildfly.extension.undertow] (ServerService 线程池 -- 68) WFLYUT0021:注册的网络上下文: '/springboot-test-0.0.1-SNAPSHOT' 用于服务器'default-server'

它应该可以在以下位置访问: http://localhost:8080/springboot-test-0.0.1-SNAPSHOT/index

如果您想注册您的地址,请将您的 Maven 文件配置为使用 <finalName>$project.artifactId</finalName>

【讨论】:

您好,这是否意味着我们必须在部署到 WildFly 服务器之前构建项目? 由于 WildFly 是应用服务器:是的,通常您部署打包的应用程序,请参阅:docs.jboss.org/author/display/WFLY/Application+deployment

以上是关于Wildfly 和 springboot 出现“404 - Not found”错误的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 应用程序未部署在 Wildfly 上

未能将 Spring Boot 应用程序部署到 WildFly

找不到 CDI BeanManager

Spring boot 和 JBoss 8 Wildfly 日志配置应用

Springboot Wildfly 10 部署报错 jdk.unsupported module not found

将 Spring Boot 部署到 Wildfly 10