2017-01-09 3 views
0

Я разрабатываю простое базовое приложение для загрузки 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 = истинный

+0

Я подозреваю, что это происходит потому, что при развертывании на внешнем сервере, он на самом деле развернут в веб-контексте. Откройте диспетчер tomcat, чтобы узнать, что такое контекст, ваш URL будет выглядеть как http: // localhost: 8080/{context}/themes/java –

+0

Если вы используете maven больше всего (если не изменили версию) что-то вроде 'localhost: 8080/SpringBootWithSpringDataJPA-0.0.1-SNAPSHOT/... ' – Patrick

+0

Ohh Большое вам спасибо. Я использую maven, и война, которая генерируется, имеет имя SpringBootWithSpringDataJPA-0.0.1-SNAPSHOT. Я забыл изменить имя. Думаю, это было глупо! Спасибо тонну !! – nbnb

ответ

2

Похоже, вы упускаете имя приложения в URL, как:

localhost:8080/appname/topics/java 

или если вы используете Maven должны быть:

localhost:8080/appnameX.X.X-SNAPSHOT/topics/java... 
+0

Спасибо! Это была проблема с вызовом url, я использую maven, поэтому война генерируется с помощью X.X.X-SNAPSHOT. Полностью пропустил это. – nbnb

 Смежные вопросы

  • Нет связанных вопросов^_^