2017-07-07 16 views
1

IntelliJ IDEA、Jersey v2.25.1、Maven、Tomcat v8.0.14でJava(JDK 1.8.0.121)で簡単なRESTサービスを構築しようとしています。Jersey2 + Tomcat 8でRESTでURLからprojectNameを削除

package com.example; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

@ApplicationPath("/api") 
public class MyApp extends Application { 
    public MyApp(){ 
     System.out.println("Server Up"); 
    } 
} 

マイウェブ:

私は、パッケージcom.example

package com.example.rest; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/hello") 
public class HelloWorld { 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getMessage() { 
     return "Hello world!"; 
    } 
} 

でGETメソッドで単純なクラスを書いている私はまた、アプリケーションの拡張メインクラスを作成しました。 XMLは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1"> 

<servlet> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.example.rest</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>jersey-serlvet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

ローカルのTomcatでアプリケーションを実行すると、すべてが正常に動作し、RESTはhttp://localhost:8080/api/helloに正常に応答します。

私が訪問する場合、私は、私のVPS上でmyproject-1.0-SNAPSHOP.warを配置する場合: http://vps_public_address:8080/api/hello私は404エラーを取得する

私が訪問した場合: http://vps_public_address:8080/myprojectに-1.0-SNAPSHOP/APIを/こんにちは。

なぜ私は "myproject-1.0-SNAPSHOP"をREST URLに書き込む必要がありますか?

リクエストURLに戦争名を入れないことは可能ですか?事前に

感謝:)

答えて

3

はい、ちょうどROOT.warにWARファイルの名前を変更し、それが動作します。

別の可能性は、展開のためのmaven-のtomcat-プラグインを使用し、プラグインの設定でコンテキストパスを設定することです:あなたの答えのための

<project> 
    ... 
    <build> 
    ... 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>tomcat-maven-plugin</artifactId> 
       <version>1.0-SNAPSHOT</version> 
       <configuration> 
        <path>/</path> 
       </configuration> 
      </plugin> 
     ... 
     </plugins> 
    ... 
    </build> 
    ... 
</project> 
+0

ありがとう!私はプラグインを使うのが好きです! 私はpom.xml(https://pastebin.com/ZT70915w)に追加しようとしましたが、 "Plugin 'org.codehaus.mojo:tomcat-maven-plugin:1.0-SNAPSHOT'が見つかりません。 " 新しいリポジトリを追加しましたか? –

関連する問題