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に戦争名を入れないことは可能ですか?事前に
感謝:)
ありがとう!私はプラグインを使うのが好きです! 私はpom.xml(https://pastebin.com/ZT70915w)に追加しようとしましたが、 "Plugin 'org.codehaus.mojo:tomcat-maven-plugin:1.0-SNAPSHOT'が見つかりません。 " 新しいリポジトリを追加しましたか? –