2017-01-09 6 views
0

jndiデータソースを使用して、外部Tomcatサーバーにデプロイされた単純なSpring Bootベースレストアプリケーションを開発しています。アプリケーションを実行すると、データベースが作成されます。これは、アプリケーションがEntityクラスを読み込み、hibernate ddlを作成できることを意味します。しかし、私がpostmanから残りのURLにヒットしようとすると、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 ----のTomcat 8(外部)

http://localhost8080/SpringBootWithSpringDataJPA/topics/javaをに動作しない------埋め込みサーバと

http://localhost8080/topics/java作品---- - SpringBootWithSpringDataJPAが私のプロジェクト名であるtomcat 8(外部)では動作しません。

application.propertiesファイルには、次のとおりです。

spring.datasource.jndi名=のjava:/コンプ/ ENV/JDBC/postgresの/ springbootDS

spring.jpa.hibernate.ddl-オート=作成します

spring.jpa.show-SQL =真

+0

私はあなたが外部のサーバーに展開するときに、それが実際にWebコンテキストに配備されているので、それはあると思います。 http:// localhost:8080/{context}/topics/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

関連する問題