Я разрабатываю WebService в Java с использованием NetBeans и использую gradle as man management.WebService Project Java on Gradle Project
Я нашел this article о разработке веб-проектов с градиентом. Он использует плагин Gretty. Я выполнил инструкции (просто изменил контейнер сервлетов с причала на tomcat) и мог разработать/развернуть веб-проект и открыть «домашнюю страницу» из сервлета.
Проблема заключается в том, что мои классы WebService работают некорректно. Все запросы GET, полученные из моего браузера, возвращают код ошибки 404. Для тестирования я создал новый WebProject, используя Netbeans, но на этот раз без 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);
}
}
И это URL для GET: http://localhost:8088/sisvendas/produtos
Как я уже говорил ранее, следующий запрос работает: http://localhost:8088/sisvendas/ (Существует также index.html файл, который бесполезен)
Что я делаю неправильно?
Спасибо @peeskillet, это сработало! Я думал, что если бы я хотел, чтобы пустой ApplicationPath мог удалить эту аннотацию. Вот почему я удалил аннотацию. –
Существуют различные способы настройки развертывания приложения. В случае использования _no_ web.xml, единственный способ обнаружения приложения - через аннотацию '@ ApplicationPath'. Если вы удалите его, он не будет запущен, так как приложение не будет обнаружено, если вы не настроите развертывание в файле web.xml –