2016-11-27 9 views
0

SpringとRESTテクノロジを研究するために作ったRESTfulサービスがほとんどない小さなSpringBootプロジェクトがあります。もし私がspring-bootで実行しているのであれば、コントローラの@RequestMappingで書いたlocalhost:8080/+で正しく動作します。例では、ローカルホスト上:8080/restapp /試験/ {ID}:埋め込みTomcatで始まるプロジェクトですが、完全なTomcatでは動作しません。

@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に展開は、ローカルホスト上で起動中:8080/project_versionそれは(のindex.htmlを開いて作成している間、私はテストのために添加whitchプロジェクト)、私は自分のサービスにアクセスしていません。私はしよう:

はlocalhost:8080/project_version/restapp /試験/ {ID}

はlocalhost:8080/project_version /試験/ {ID}

はlocalhost: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 - 空のクラス、アプリケーションを拡張します。

すべてのアドバイス/回答のためのThanx。

+0

もう1つのこと - Application.javaがまったく開始しないようです。これは 'Logger log = Logger.getLogger(Application.class.getName());という行のためです。 log.info( "///////// Application started successfully、////////"); Tomcatのログファイルで何も変更しません。プロジェクトの展開に関する情報のみです。 – WildTigerrr

答えて

0

SpringBootServletInitializerからアプリケーションを拡張することで問題を解決しました。

0

コントローラ@RequestMappingvalueは相対パスだけ、ない絶対パスでなければなりませんので、以下に示すように、それを変更する必要があるため、お使いのコントローラのマッピングが正しくありません:

@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のために)、以下のURLを使用して、コントローラのメソッドにアクセス:Applicationクラスに@SpringBootApplicationまたは@EnableWebMvcを追加する

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

私は知っています、これは元々、@RestController @RequestMapping(value = "/ restapp")のようなものでした。public class ControllerはApplicationConfig {... @RequestMapping(value = "/ test/{id}"、method = RequestMethod)を継承しています。 GET)public String getWelcome(@PathVariable(value = "id")String id){return "jax-rsへようこそ" + id; }} ' 私はそれを動作させるようにしていましたので、パスをさまざまな方法で変更してください。 – WildTigerrr

0

てみてください。 次に、javaguyの答えを参照してください。

+0

しかし、@ SpringBootApplicationは@ Configuration、@ EnableAutoConfiguration、および@ ComponentScanを使用するのと同じです。 @ EnableWebMvcは必要に応じてConfigurationクラスでのみ使用できます。 – WildTigerrr

関連する問題