sách gpt4 ai đã đi

WebService ProjectJava trên Gradle Project

In lại 作者:行者123 更新时间:2023-11-30 07:21:00 27 4
mua khóa gpt4 Nike

我正在使用 NetBeans 开发 Java 中的 WebService,并使用 gradle 作为依赖管理。

我找到了bài viết này关于使用 gradle 开发 Web 项目。它使用 Gretty 插件。我按照说明进行操作(只是将 servlet 容器从 jetty 更改为 tomcat),并且可以开发/部署一个 Web 项目并从 servlet 打开“主页”。

问题是我的 WebService 类无法正常工作。我的浏览器发出的所有 GET 请求都会返回 404 错误代码。为了进行测试,我使用 Netbeans 创建了一个新的 WebProject,但这次没有使用 Gradle,而且它的工作方式非常出色。

Mã như sau:

Xây dựng.gradle

xây dựng kịch bản {
kho lưu trữ {
trung tâm()
}
phụ thuộc {
classpath 'org.akhikhl.gretty:gretty:+'
}
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'org.akhikhl.gretty'

gretty {
port = 8088
contextPath = '/sisvendas'
servletContainer = 'tomcat8'
}
kho lưu trữ {
mavenCentral()
}

phụ thuộc {
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{

@Ghi đè
public Set> getClasses() {

Set> resourcesSet = new java.util.HashSet<>();
adicionarClassesRecursos( resourcesSet );
return resourcesSet;

}

private void adicionarClassesRecursos( Set> resources ) {
resources.add( com.gear.dev.webprojectgradle.resources.ProdutosResource.class );
}

}

这是 GET 的 URL:http://localhost:8088/sisvendas/produtos

正如我之前所说,以下请求有效:http://localhost:8088/sisvendas/(还有一个index.html文件没用)

Tôi đang làm gì sai?

1 Câu trả lời

JAX-RS 只是一个đặc điểm kỹ thuật。它需要hoàn thành才能发挥作用。您拥有的 javax.ws.rs-api 依赖项只是đặc điểm kỹ thuật jar。没有实现,意味着没有引擎来运行应用程序。提供运行 JAX-RS 应用程序的引擎是实现的关键。

话虽这么说,JAX-RS 规范是 Java EE 规范的一部分,因此如果您在完全兼容 Java EE 的应用程序服务器(例如 Wildfly 或 Glassfish)中运行,那么该应用程序服务器将具有 JAX-RS已经在内部实现,因此在应用程序项目级别您需要的只是编译源代码的规范 jar,并且应用程序服务器将具有在运行时运行应用程序的引擎。

但就您而言,Tomcat KHÔNG符合 Java EE 的服务器。它只是一个 servlet 容器,实现了 servlet 规范。因此,如果您想将 JAX-RS 与 Tomcat 一起使用,您仍然需要 JAX-RShoàn thành. Jersey就是这样的一种实现。要使用 Jersey 实现,您实际上只需要以下依赖项

compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.23'
compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.23'

后一个依赖是添加 JSON/POJO 支持。代码中缺少的另一件事是 Application 类上的 @ApplicationPath 注释

@ApplicationPath("/")
public class ApllicationConfig extends Application {

@ApplicationPath 注释设置 Jersey 应用程序的 servlet 映射。如果您将其更改为 /api,那么您将访问的 URI 为

http://localhost:8080/sisvendas/api/produtos

关于java - WebService 项目 Java on Gradle 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581155/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com