Я разрабатываю простое базовое приложение для загрузки Spring Boot, которое было развернуто на внешний сервер tomcat с источником данных jndi. Когда я запускаю приложение, создается база данных, это означает, что приложение может читать классы Entity и создавать hibernate ddl. Однако, когда я пытаюсь ударить по остальному url из postman, возвращается сообщение об ошибке 404. Это произошло после того, как я переместил приложение на внешний сервер, когда я использовал встроенный сервер, я смог ударить по URL-адресам. Может кто-нибудь помочь мне выяснить, что я делаю неправильно?Spring Boot: Rest URL возвращается 404
Main method:
package com.nb;
@SpringBootApplication
public class SpringBootWithSpringDataJpaApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringBootWithSpringDataJpaApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBootWithSpringDataJpaApplication.class);
}
Controller:
package com.nb.springboot.topic;
@RestController
public class TopicController {
@Autowired
private TopicService topicService;
@RequestMapping("/topics")
public List<Topic> getAllTopics(){
return topicService.getAllTopics();
}
@RequestMapping("/topics/{id}")
public Topic getTopic(@PathVariable("id") String id){
return topicService.getTopic(id);
}
@RequestMapping(method=RequestMethod.POST, value="/topics")
public void addTopic(@RequestBody Topic topic){
topicService.addTopic(topic);
}
@RequestMapping(method=RequestMethod.PUT, value="/topics/{id}")
public void updateTopic(@RequestBody Topic topic, @PathVariable String id){
topicService.updateTopic(topic, id);
}
@RequestMapping(method=RequestMethod.DELETE, value="/topics/{id}")
public void deleteTopic(@PathVariable String id){
topicService.deleteTopic(id);
}
}
http://localhost:8080/topics/java ---- работает со встроенным сервером
http://localhost8080/topics/java ------ не работает в 8 (кота внешний)
http://localhost8080/SpringBootWithSpringDataJPA/topics/java ---- - не работает в tomcat 8 (внешний), где SpringBootWithSpringDataJPA - мое имя проекта.
Файл application.properties является:
имя spring.datasource.jndi = Java:/сост/ENV/JDBC/Postgres/springbootDS
spring.jpa.hibernate.ddl-авто = создать
spring.jpa.show-SQL = истинный
Я подозреваю, что это происходит потому, что при развертывании на внешнем сервере, он на самом деле развернут в веб-контексте. Откройте диспетчер tomcat, чтобы узнать, что такое контекст, ваш URL будет выглядеть как http: // localhost: 8080/{context}/themes/java –
Если вы используете maven больше всего (если не изменили версию) что-то вроде 'localhost: 8080/SpringBootWithSpringDataJPA-0.0.1-SNAPSHOT/... ' – Patrick
Ohh Большое вам спасибо. Я использую maven, и война, которая генерируется, имеет имя SpringBootWithSpringDataJPA-0.0.1-SNAPSHOT. Я забыл изменить имя. Думаю, это было глупо! Спасибо тонну !! – nbnb