项目从嵌入式Tomcat开始,但不能在完整的Tomcat中运行

时间:2016-11-27 22:42:06

标签: java rest spring-mvc tomcat intellij-idea

我有一个小型的SpringBoot项目,只有很少的RESTful服务,我用它来研究Spring和REST技术。如果我通过spring-boot运行它:运行它在localhost上正常工作:8080 / +我在Controller中的@RequestMapping中编写的内容。例如,在localhost:8080 / restapp / test / {id}:

@RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}",
      method = RequestMethod.GET)
    public String getWelcome(@PathVariable(value = "id") String id) {
    return "Welcome to jax-rs " + id;
}

在完整的Tomcat中部署时,它开始于localhost:8080 / project_version它打开了index.html(我在创建项目时添加了测试)并且我无法访问我的服务。我在尝试:

本地主机:8080 / project_version / restapp /测试/ {ID}

本地主机:8080 / project_version /测试/ {ID}

本地主机:8080 / project_version / PROJECT_NAME / restapp /测试/ {ID}

但只有404错误。

Application.java

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
    }
}

Controller.java

@RestController
public class Controller extends ApplicationConfig {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();
        s.add(Controller.class);
        return s;
    }

    @RequestMapping(value = "http ://localhost:8080/restapps-0.0.1-SNAPSHOT/restapp/test/{id}",
            method = RequestMethod.GET)
    public String getWelcome(@PathVariable(value = "id") String id) {
        return "Welcome to jax-rs " + id;
    }
}

ApplicationConfig - 空类,它扩展了Application。

Thanx所有建议/答案。

3 个答案:

答案 0 :(得分:0)

您的控制器映射不正确,因为控制器 @RequestMapping value应该只是相对路径,而不是绝对路径,因此需要更改如下所示:

@RestController
@RequestMapping(value="/test")
public class Controller extends ApplicationConfig {

    @RequestMapping(value = "{id}", method = RequestMethod.GET)
    public String getWelcome(@PathVariable(value = "id") String id) {
        return "Welcome to jax-rs " + id;
    }
}

您应该能够使用以下网址(资源ID为1)访问您的Controller方法:

http ://localhost:8080/restapps-0.0.1-SNAPSHOT/test/1

答案 1 :(得分:0)

尝试在Application类中添加@SpringBootApplication或@EnableWebMvc。 然后看 javaguy 的答案。

答案 2 :(得分:0)

通过从SpringBootServletInitializer扩展Application来解决问题。