我想用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中?
感謝提前:)
謝謝您的回答!我更喜歡使用插件! 我試圖將它添加到我的pom.xml(https://pastebin.com/ZT70915w),但它說「插件'org.codehaus.mojo:tomcat-maven-plugin:1.0-SNAPSHOT'找不到。 」。 我需要添加一個新的存儲庫嗎? –