首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jersey对子资源“找不到合适的构造器”

Jersey是一个用于构建RESTful Web服务的Java框架,它是JAX-RS(Java API for RESTful Web Services)规范的参考实现。当你在使用Jersey时遇到“找不到合适的构造器”的错误,通常是因为Jersey无法找到一个合适的构造器来实例化你的资源类。

基础概念

  • 资源类:在JAX-RS中,资源类是用来处理HTTP请求的Java类。
  • 构造器注入:依赖通过类的构造器传递。

相关优势

  • 简化开发:通过注解可以直接映射HTTP方法和URI到Java方法。
  • 可扩展性:支持自定义的媒体类型和消息体处理器。
  • 集成方便:可以很容易地与现有的Java EE应用集成。

类型

  • 根资源类:直接映射到一个或多个URI路径的资源类。
  • 子资源类:由根资源类或其他子资源类动态提供的资源类。

应用场景

  • Web服务:构建RESTful API。
  • 微服务架构:作为微服务之间的通信接口。

问题原因及解决方法

原因

  1. 缺少无参构造器:Jersey默认使用无参构造器来实例化资源类。
  2. 构造器参数未被正确注入:如果使用了依赖注入,但相关的依赖没有被正确配置。
  3. 构造器访问权限:构造器可能是私有的或者包级私有,导致Jersey无法访问。

解决方法

  1. 添加无参构造器
  2. 添加无参构造器
  3. 使用依赖注入框架:如HK2或CDI,并确保依赖被正确注册和注入。
  4. 使用依赖注入框架:如HK2或CDI,并确保依赖被正确注册和注入。
  5. 确保构造器是公共的
  6. 确保构造器是公共的

示例代码

假设我们有一个依赖Dependency,我们需要确保它可以通过构造器注入到资源类中。

代码语言:txt
复制
public class Dependency {
    public String getSomeData() {
        return "Data from dependency";
    }
}

@Path("/example")
public class ExampleResource {
    private final Dependency dependency;

    @Inject
    public ExampleResource(Dependency dependency) {
        this.dependency = dependency;
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getExample() {
        return dependency.getSomeData();
    }
}

确保你的应用服务器或框架支持依赖注入,并且Dependency类已经被正确注册为一个可注入的服务。

通过以上步骤,你应该能够解决Jersey中子资源“找不到合适的构造器”的问题。如果问题仍然存在,可能需要检查你的依赖注入配置或者查看更详细的错误日志来确定具体的问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

注册中心 Eureka 源码解析 —— Eureka-Client 初始化(三)之 EurekaClient

{ return null; } } 从 com.netflix.discovery.NotImplementedRegistryImpl 可以看出,目前 Eureka-Client 未提供合适的默认实现...com.netflix.appinfo.HealthCheckHandler,健康检查处理器接口,目前暂未提供合适的默认实现,唯一提供的 com.netflix.appinfo.HealthCheckCallbackToHandlerBridge...这里声明泛型 的原因,Jersey 1.X 和 Jersey 2.X 的过滤器接口不同,通过泛型来支持。...3.2 构造方法 DiscoveryClient 的构造方法实现代码相对较多,已经将代码切块 + 中文注册,点击 DiscoveryClient 链接,对照下面每个小结阅读理解。...3.2.13 执行向 Eureka-Server 注册之前的处理器 // DiscoveryClient.java 构造方法 // call and execute the pre registration

3.2K40

八、远程通信模块:手动构建JerseyApplicationClient客户端完成服务注册、服务下线...

,文末指出我们一般并不会通过构造器去直接构造出它的实例来完成请求的发送。...---- 纯手工构造问题抛出 想要使用JerseyApplicationClient完成服务注册很直接:它只有一个构造器,按照规定传入指定参数即可,如下示例: @Test public void fun10...本处给出两种途径: 给com.sun.jersey.api.client.Client指定可用的序列化、反序列化器 优点:能解决问题 缺点:需要对jersey的玩法有较为深入了解,有较大的学习成本 既然只是为了解决...client", e); } } 该唯一构造器是唯一的初始化方法,需要指定4个参数,使用起来其实并不方便。...但是,这还不够纯粹,虽然你并没有直接的构造Jersey的API,但你仍旧接触到了Jersey字样,so那必然还和Jersey库存在一定的耦合性。那么下文将继续介绍全自动的构建方式,彻底做到零感知。

1.5K30
  • 图个源码系列 · Eureka Client启动注册,Server如何处理的全流程剖析

    分析的入口就是com.netflix.discovery.DiscoveryClient,我们从他的构造函数入手,剖析整个初始化,启动,发起注册的流程。...eureka server进行注册的话,会搞一个定时任务,每隔一定时间发送心跳,执行一个HeartbeatThread; 创建了服务实例副本传播器,将自己作为一个定时任务进行调度; 创建了服务实例的状态变更的监听器...紧接着就是检查状态,看看状态是否下线,并把最新的状态赋值给服务实例管理器。...请求,http://localhost:8080/v2/apps/ServiceA,经过jersey的统一拦截器就会路由到指定的web controller处理,在eureka-core工程目录下的resources...然后根据服务实例Id来匹配对应的Lease,此时如果我们是第一次注册,肯定是找不到的,进入else分支,一上来就加了重量级锁synchronized,这里处理的是有关于自我保护逻辑中每分钟预期收到心跳的数量

    54820

    七、远程通信模块:EurekaHttpClient接口抽象以及基于Jersey的Low-Level实现JerseyApplicationClient

    围绕该接口可以发现有两大“分支”: low-level实现:实现http发送请求,如使用Jersey、OkHttp等 top-level实现:使用装饰器模式在low-level实现的基础上包装上重试、会话保持...jerseyClient; // 目标地址:如http://localhost:8080/eureka/ protected final String serviceUrl; ... // 省略构造器为其赋值...} AbstractJerseyEurekaHttpClient实际上是不做底层通讯的工作的,全部都是交由com.sun.jersey.api.client.Client处理的,该Client的时候在构造的时候是必须指定的...Server端的资源地址一一对应 发送数据、接收数据均是application/json的媒体格式 发送数据的body体(如InstanceInfo info)的序列化动作是交给Client本身去完成的...,因此序列化器/反序列化器也是由传入Client已经指定好的 对response返回(不管响应码是多少)都统一适配为EurekaHttpResponse类型 下面在意delete请求:服务下线为例作为参照

    1.2K20

    从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta

    Apache Wink,一个Apache软件基金会孵化器中的项目,其服务模块实现JAX-RS规范 2.3.4 Jersey Jersey 是 JAX-RS(JSR311)开源参考实现。...定义了如下的术语描述依赖注入: A 类型依赖 B类型(或者说 B 被 A 依赖),则 A类型 称为”依赖(物) dependency” 运行时查找依赖的过程,称为”解析 resolving“依赖 如果找不到依赖的实例...javax.annotation 中主要包含以下几个注解: @Generated:生成资源的注解,通过该项标记产生的实例是一个资源。类似于Spring中的@Bean注解,用于生成一向资源。...@PostConstruct 创造资源之后的回调处理。 @PreDestroy 销毁资源之前的回调处理。 @Resource 标记使用资源的位置。...该项目提供了开发高质量应用服务器的结构化过程,以前所未有的速度提供新的功能。

    2.7K10

    九、远程通信模块:使用TransportClientFactory构建底层请求客户端完成服务注册、服务下线

    而上文讲到了使用Eureka提供的EurekaJerseyClient通过Builder模式去构建已经比较方便了,但是仍旧存在一个小问题:无法摆脱Jersey关键字的感知,自然底层上也就无法摆脱对Jersey...即使你并不需要使用Jersey的API来做事,但使用时你却明显的知道你实际就是在用Jersey来干活,似乎有点欲盖弥彰。...new IllegalArgumentException("Malformed serviceUrl: " + serviceUrl); } } // 当然还提供了一个更为原子的构造器...构造器都被标记为了@Deprecated,是因为只想你通过builder的方式去构建 工厂方法:创建一个JerseyApplicationClient实例 JerseyEurekaHttpClientFactory...说明:JerseyEurekaHttpClientFactoryBuilder的构造器是public的,若你愿意也可以自己创建一个Builder实例来构建实体 它的build()方法如下: JerseyEurekaHttpClientFactory.JerseyEurekaHttpClientFactoryBuilder

    1.2K20

    【一起学源码-微服务】Nexflix Eureka 源码六:在眼花缭乱的代码中,EurekaClient是如何注册的?

    * * 用于将本地instanceinfo更新和复制到远程服务器的任务。...总结 (1)DiscoveryClient构造函数会初始化EurekaClient相关的定时任务,定时任务里面会启动instanceInfo 互相复制的任务,就是InstanceInfoReplicator...这里找的是EurekaTransport,在构造的时候,调用了scheduleServerEndpointTask()方法,这个方法里就初始化了专门用于注册的RegistrationClient。...(7)eureka大量的基于jersey框架,在eureka server上提供restful接口,在eureka client如果要发送请求到eureka server的话,一定是基于jersey框架...里面,语义不明朗 (2)负责发送请求的HttpClient,类体系过于复杂,导致人根本就找不到对应的Client,最后是根据他是使用jersey框架来进行restful接口暴露和调用,才能连蒙带猜,找到真正发送服务注册请求的地方

    79210

    Flink 开发生产问题汇总,亲自解决的才是最宝贵的

    2、资源隔离建议 在Flink中,资源的隔离是通过Slot进行的,也就是说多个Slot会运行在同一个JVM中,这种隔离很弱,尤其对于生产环境。...但是并不是所有的情况都是这个原因,还需要进一步看 yarn 的日志( 查看 yarn 任务日志:yarn logs -applicationId -appOwner),如果代码写的没问题,就确实是资源不够了...通过 slotSharingGroup("xxx") ,减少 Slot 中共享 Task 的个数 4、启动报错,提示找不到 jersey 的类 java.lang.NoClassDefFoundError...: com/sun/jersey/core/util/FeaturesAndProperties 解决办法进入 yarn中 把 lib 目中的一下两个问价拷贝到 flink 的 lib 中 hadoop.../share/hadoop/yarn/lib/jersey-client-1.9.jar /hadoop/share/hadoop/yarn/lib/jersey-core-1.9.jar 5、Scala

    2.9K10

    java jersey使用总结_Java Jersey2使用总结

    简介 Jersey是JAX-RS(JSR311)开源参考实现用于构建 RESTful Web service,它包含三个部分: 核心服务器(Core Server) :通过提供JSR 311中标准化的注释和...在本次开发中使用Jersey2.0,并且仅使用了核心服务器。...开发包中将以下库复制的WEB-INF下的库目录: 服务器:jersey-server.jar 、jersey-container-servlet-core.jar、jersey-container-servlet.jar...或者在浏览器中输入以下URL,将会看到“Hello Jersey” 使用 资源 Root Resource And Sub-Resource 资源是组成RESTful服务的关键部分,可以使用HTTP方法...XML数据转换器即可,详见 Jersey用户手册 问题总结 Ajax请求(POST、PUT和DELETE)无法将数据提交到Jersey容器 问题阐述 在短信平台的开发中,数据的CRUD全部使用Ajax技术完成

    1.3K10

    webservice框架jersey简单总结

    ,知道了一些概念上的定义,就可以具体使用jersey,自己做了jerseyDemo来简单说名jersey的使用。...另外,jersey1.X的版本是sun公司提供的独立的jar包,在2.X版本中,已经将jersey融合到JavaSE中,在javax.ws.rs.*包中。...,一种是使用自己的资源加载器去加载资源,需要给出自己资源加载器的位置。...另一种是使用默认的资源加载器加载,需要给出资源所在的package。个人主张第一种,写一个自己的资源加载器去加载想要加载的资源,这样感觉可控性强一点, 接下来会介绍这个资源加载器如何编写。...之前说道使用自己的资源加载器可控性强的特点就是可以除了加载业务资源以外,还可以加载日子和其他的需要一些工具资源等等。或者package下的某个资源不想被暴露,就不要加载进来就可以了。

    1K20

    【Java】已解决:org.glassfish.jersey.server.ContainerException

    该异常通常在容器启动或处理请求时抛出,表示服务器内部发生了无法处理的错误。...报错的原因主要有以下几点: 依赖配置问题:Jersey相关依赖未正确配置,或者与Spring Boot的依赖冲突。...资源类配置错误:资源类未被正确注册或扫描,导致容器无法找到相应的资源类。 注解使用不当:JAX-RS注解使用不当,导致框架无法正确处理请求。...如果返回null,Jersey可能无法处理,导致容器异常。 缺少@Component注解:未将资源类注册为Spring组件,导致容器无法扫描到该类。...四、正确代码示例 为了解决该报错问题,我们需要确保依赖配置正确,资源类被正确注册,并且方法返回正确的值。

    24410

    【微服务架构】介绍KivaKit框架

    组件是轻量级组件,使用广播/侦听器消息传递系统传递状态信息 KivaKit迷你框架,包括转换、验证、资源和日志迷你框架,通过消息传递使用和报告状态信息 KivaKit配置并运行Jetty、Jersey、...Class type, Factoryfactory) { return MixinState.get(this, type, factory); } } 如果state()找不到此的...由于组件是中继器,因此可以创建侦听器链,如上所述。 除了提供对消息的方便访问外,组件还提供以下功能: 注册和查找对象 加载和访问设置对象 访问包资源 让我们看看这些设施。...然后,微服务的构造函数将项目对象传递给超类构造函数。此对象用于初始化包含应用程序的项目以及它所依赖的任何其他项目。...所有转换器都需要一个侦听器作为构造函数参数,而不是依赖转换器用户来调用listenTo()。这确保所有转换器都能够向至少一个侦听器报告转换问题。

    42420

    JavaEE的RESTful标准技术JAX-RS,jersey-client客户端使用介绍【享学Java】

    现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开Web API,因此REST变得越来越重要和流行。使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进。...,即面向资源。...是由JBoss公司开发的,所以将用RESTEasy框架实现的应用部署到JBoss服务器上,可以实现很多额外的功能(但很显然,JBoss已经退出了历史舞台)。...(glassfish公司) 资源扫描: 1.x:com.sun.jersey.config.property.packages 2.x:jersey.config.server.provider.packages...注解支持: 1.x:不支持Servet3.x的注解 2.x:支持注解如@WebServlet来扫描jersey的资源 … 说明:glassfish是一款web应用服务器,和tomcat一样,也是一款优秀的

    6.2K21

    Dropwizard框架入门

    DW不是将你的程序提交到复杂的服务器上,DW上有个main方法来启动我们的服务器,DW是将我们的应用作为一个简单的线程来跑,消去了Java生产环境中一些非常复杂令人讨厌的过程,并且允许我们使用所有现有的...Jersey for REST 为了定义Restful的web应用,我们发现在性能和特性方面没有什么能比得过Jersey。...Creating A Resource Class Jersey资源是DW应用程序的肉和土豆(这种比喻我也是醉了)。每个资源类都与URL相关联(这个很重要,后面有说)。...@Produces(MediaType.APPLICATION_JSON)让Jersey的内容协商代码知道这个资源产生的是application/json....HelloWorldResource构造器接收两个参数,创建saying的template和当用户没有指明名字时的默认名称。

    3.3K40

    Java Web常见框架寻找路由技巧

    异常处理:控制器负责处理业务逻辑中可能抛出的异常,并返回适当的错误响应或重定向。 响应生成:控制器根据业务逻辑的结果生成响应,这可能包括渲染视图、返回JSON数据、重定向到其他页面等。...当然还有一些特定的配置类,例如在Spring中,在Jersey中,ResourceConfig类常用于配置路由。 可以通过关键字匹配的方式获取到对应的资源目录,然后逐个进行审计。...在Jersey中在资源类上使用@Path注解来定义基础路径,然后在资源方法上使用额外的@Path注解来指定具体的子路径。...#initialize获取jersey注册的router,其的作用是初始化应用程序的请求处理,通过该方法可以查找并注册应用程序中的资源类(Resources)和提供者(Providers),如异常处理器...例如根据资源类上的注解(如 @Path)和其他配置信息,配置请求到资源方法的路由: 可以看到通过routingStage可以获取到当前jersey注册的router: 0x02 其他 通过上面的几种方式

    34910

    Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的支持...开发RESTful WebService意味着支持在多种媒体类型以及抽象底层的客户端-服务器通信细节,如果没有一个好的工具包可用,这将是一个困难的任务 为了简化使用JAVA开发RESTful WebService...,可注入的类有:Application,UriInfo,Request,HttpHeaders和SecurityContext @Singleton和@PerRequest 默认情况下,资源类的生命周期是...per-request,也就是系统会为每个匹配资源类URI的请求创建一个实例,这样的效率很低,可以对资源类使用@Singleton注解,这样在应用范围内,只会创建资源类的一个实例 服务端程序如下: package.../ 创建web资源,创建请求,接受响应都是线程安全的 // 所以Client实例和WebResource实例可以在多个线程间安全的共享 Client client = Client.create

    1.7K20

    新浪微博平台服务部署及Web框架

    对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。 通过操作资源的表现形式来操作资源。...反向代理(Reverse Proxy)方式是指以代理服务器来接受公网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给公网上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器...应用服务器在收到下行请求(如查询一条微博的内容)时,会直接访问缓存资源,如果命中则直接返回结果给客户端,否则继续查询DB,将结果返回客户端。...特性比较丰富,包括 接口路由 功能丰富的Filter Http参数校验 文档生成 此外Jersey还提供一些额外的API和扩展机制,所以开发人员能够按照自己的需要对Jersey进行扩展。...在Jersey提供的扩展机制上,我们开发了Credus,主要功能有 封装Jersey框架 定制内容 Wiki模板 在Jersey提供的Filter机制上,Credus框架定制了一系列接口通用策略和功能。

    3.6K20
    领券