NetBeans を使用し、依存関係管理として gradle を使用して、Java で WebService を開発しています。
Gradle を使用した Web プロジェクトの開発に関するこの記事を見つけました。Gretty プラグインを使用します。指示に従って(サーブレットコンテナーを jetty から tomcat に変更しただけです)、Webプロジェクトを開発/展開し、サーブレットから「ホームページ」を開くことができました。
問題は、WebService クラスが正しく機能していないことです。ブラウザからのすべての GET リクエストで 404 エラー コードが返されます。テストのために、Netbeans を使用して新しい WebProject を作成しましたが、今回は Gradle を使用せずに魅力的に動作します。
コードは次のとおりです。
build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.akhikhl.gretty:gretty:+'
}
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'
gretty {
port = 8088
contextPath = '/sisvendas'
servletContainer = 'tomcat8'
}
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.10'
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
compile group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.0.1'
}
リソース:
@Path("produtos")
public class ProdutosResource {
@Context
private UriInfo context;
public ProdutosResource() {
}
@GET
@Produces("application/json")
public String getJson() {
// Just for testing...
return "{\"produtos\":\"arroz\"}";
}
@PUT
@Consumes("application/json")
public void putJson(String content) {
}
}
アプリケーション構成クラス:
public class ApllicationConfig extends Application{
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resourcesSet = new java.util.HashSet<>();
adicionarClassesRecursos( resourcesSet );
return resourcesSet;
}
private void adicionarClassesRecursos( Set<Class<?>> resources ) {
resources.add( com.gear.dev.webprojectgradle.resources.ProdutosResource.class );
}
}
これは GET の URL です: http://localhost:8088/sisvendas/produtos
前に述べたように、次のリクエストは機能します: http://localhost:8088/sisvendas/ (役に立たない index.html ファイルもあります)
私が間違っているのは何ですか?