2017-07-07 28 views
1

我想用IntelliJ IDEA,Jersey v2.25.1,Maven和Tomcat v8.0.14在Java(JDK 1.8.0.121)中構建一個簡單的REST服務。使用Jersey2 + Tomcat從REST中刪除projectName 8

我寫了一個簡單的類在包com。示例

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方法,我還創建了一個擴展應用程序主類:

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"); 
    } 
} 

我的網頁。 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上成功回覆。

當我放置的myproject-1.0-SNAPSHOP.war我的VPS,如果我訪問: http://vps_public_address:8080/api/hello我得到一個404錯誤

,但如果我訪問: http://vps_public_address:8080/的myproject-1.0-SNAPSHOP/API /你好它的作品。

爲什麼我必須在REST URL中編寫「myproject-1.0-SNAPSHOP」?

是否可以避免把戰爭名稱放在請求URL中?

感謝提前:)

回答

3

是的,只是重命名war文件ROOT.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),但它說「插件'org.codehaus.mojo:tomcat-maven-plugin:1.0-SNAPSHOT'找不到。 」。 我需要添加一個新的存儲庫嗎? –