为了账号安全,请及时绑定邮箱和手机立即绑定

Exception in thread “main” javax.ws.rs.

Exception in thread “main” javax.ws.rs.

德玛西亚99 2022-09-28 10:11:59
我有一个用于调用 REST 网络服务的 Java 客户端。如果我在 java 类中声明路径。一切都很好,即:就像这样:@Path("/aqsensor")@Produces(MediaType.TEXT_PLAIN)public class CUManagerSensorImp {@GET@Path("/getQuality")public String getQuality() {        String quality;        double average = getAverage();        if (isBetween(average, 0, 39))            quality = "Bonne qualité de l'air";        else if (isBetween(average, 40, 79))            quality = "Moyenne qualité de l'air";        else            quality = "Mauvaise qualité de l'air";        return quality;    }    private double getAverage() {        int v = (int) (Math.random() * 125);        return v;    }    private boolean isBetween(double average, int min, int max) {        if (average >= min && average <= max)            return true;        else            return false;    }但是如果我在接口中声明路径。像这样(接口代码):@Path("/aqsensor")@Produces(MediaType.TEXT_PLAIN)public interface CUManagerSensor {    @GET    @Path("/getQuality")    String getQuality();这是接口实现:public class CUManagerSensorImp implements CUManagerSensor{@Overridepublic String getQuality() {        String quality;        double average = getAverage();        if (isBetween(average, 0, 39))            quality = "Bonne qualité de l'air";        else if (isBetween(average, 40, 79))            quality = "Moyenne qualité de l'air";        else            quality = "Mauvaise qualité de l'air";        return quality;    }    private double getAverage() {        int v = (int) (Math.random() * 125);        return v;    }    private boolean isBetween(double average, int min, int max) {        if (average >= min && average <= max)            return true;        else            return false;    }}添加接口时问题出在哪里?是否禁止在创建 Web 服务 rest 时添加接口?或者是否应该向 Web .xml文件添加一些说明?并提前感谢您
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

在 JSR-339(用于 RESTful Web 服务的 Java API 2.0)中,您可以在 3.6 节注释继承的开头直接阅读:

JAX-RS 注释可用于超类或已实现接口的方法和方法参数。

因此,可以使用注释,但只能在方法和方法参数中使用,而不是在接口本身中使用,这很可能是因为他们将尝试创建用它注释的类型实例。

因此,您情况下的问题似乎是以下注释:

@Path("/aqsensor")
@Produces(MediaType.TEXT_PLAIN)

这应该保留在特定的类中,而不是接口中。同一部分中的规范末尾还指出:

为了与其他 Java EE 规范保持一致,建议始终重复注记,而不是依赖于注解继承。

因此,使用注释继承需要您自担风险。


查看完整回答
反对 回复 2022-09-28
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号