【问题标题】:Why doesn't my Spring-based web application respond to its defined endpoints为什么我的基于 Spring 的 Web 应用程序不响应其定义的端点
【发布时间】:2018-04-20 00:03:54
【问题描述】:

我正在开发一个简单的基于 Spring 的 Web 服务 userSetting 以在 Liberty 8.5.5.9 上运行。我能够构建和部署该服务,当我启动它时,它似乎了解它的上下文根 (userSetting),但没有任何端点;我相信我缺少应用程序部分的一些基本的基于 Spring 的链接,但不知道是哪个。

应用程序的主类如下所示:

@SpringBootApplication
@ImportResource("classpath:spring-resource1.xml")
@Import({RESTInterface.class})
public class UserSettingApplication {

  private static final LoggerUtils logger = new LoggerUtils( UserSettingApplication.class );

  public static void main(String[] args) {
          logger.debug( "Entering UserSettingApplication.main()" );
          System.out.println( "Entering UserSettingApplication.main()" );
    SpringApplication.run(UserSettingApplication.class, args);
          logger.debug( "Exiting UserSettingApplication.main()" );
          System.out.println( "Exiting UserSettingApplication.main()" );
 }

  // Dan Vega says:  Remember that this going to execute after the 
  // application context is loaded so you could use it to check if 
  // certain beans exist or what values of certain properties are. 

  @Bean
  public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return args -> {

      logger.info("Let's inspect the beans provided by Spring Boot:");

      String[] beanNames = ctx.getBeanDefinitionNames();
      Arrays.sort(beanNames);
      for (String beanName : beanNames) {
        logger.info(beanName);
      }
    };
  }
}

而定义端点的类(简称单端点)是:

@CrossOrigin
@RestController
@RequestMapping(path = "userSetting")
public class RESTInterface {
        ...

        @RequestMapping(path = "/hello", method = { RequestMethod.GET }, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public String hello() {
                return "Hello, dude!";
        }

}

当我尝试访问端点 http://localhost:9080/userSetting/userSetting/hello 时,我收到消息:

Error 404: java.io.FileNotFoundException: SRVE0190E: File not found: /userSetting/hello

似乎RestController 没有正确连接到应用程序;无奈之下,我尝试在主类中添加以下行:

@Import({RESTInterface.class})

但这并没有改变任何东西。有人可以告诉我如何正确连接端点吗?

【问题讨论】:

  • 如果您在 Liberty 中运行它,请更改类定义以像 UserSettingApplication extends SpringBootServletInitializer 一样扩展 SpringBootServletInitializer 并覆盖 configure 方法

标签: spring websphere-liberty


【解决方案1】:

尝试点击http://localhost:9080/userSetting/hello 您在 url 中给出了两次“userSetting”

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多