我正在尝试构建一个RESTful web服务。该组件是对已包含多个servlet的现有Tomcat7Web应用程序的添加。我用的是泽西2.25。
我需要实例化一些与现有系统相关的组件(对象)。我希望在应用程序加载时这样做一次,然后从每个资源中读取它们。
@ApplicationPath("resources")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("plc_webservice.PersonResource");
register(new MyBinder());
}
}
public class MyBinder extends AbstractBinder{
@Override
protected void configure() {
bind(new MyService()).to(MyService.class);
}
}
public class MyService {
String name;
public MyService() {
name = "John";
}
public String getName() {
return name;
}
}
和资源:
@Path("Person")
public class PersonResource {
@Inject
private MyService service;
@GET
public String test() {
String result = "Hello!";
return result;
}
}
我不明白为什么我会得到这个例外:
ServletException:一个MultiException有3个异常。他们是:1。org.glassfish.hk2.api.unsatisfiedDependencyException:在SystemInjecteeImpl(RequiredType=MyService,Parent=PersonResource,Qualifiers={},Position=-1,Optional=False,Self=False,Unqualified=Null,1688478701)2处没有可用于注入的对象。java.lang.IllegalArgumentException:尝试解析plc_webservice.PersonResource的依赖项时发现错误%3。java.lang.IllegalStateException:无法在plc_webservice.personResource上执行操作:resolve
org.glassfish.jersey.servlet.webcomponent.serviceImpl(webcomponent.java:489)org.glassfish.jersey.servlet.webcomponent.service(webcomponent.java:427)org.glassfish.jerse.servlet.servetcontainer.service(servletcontainer.java:388)org.glassfish.jerse.servlet.servetcontainer.service(servletcontainer.java:341)
MultiException有3个异常。他们是:1。org.glassfish.hk2.api.unsatisfiedDependencyException:在SystemInjecteeImpl(RequiredType=MyService,Parent=PersonResource,Qualifiers={},Position=-1,Optional=False,Self=False,Unqualified=Null,1688478701)2处没有可用于注入的对象。java.lang.IllegalArgumentException:尝试解析plc_webservice.PersonResource的依赖项时发现错误%3。java.lang.IllegalStateException:无法在plc_webservice.personResource上执行操作:resolve
谢谢你。
我认为这是CDI的问题。是否定义了beans.xml?此外,如果您希望myservice
是一个单例,我认为您希望使用@applicationscoped对其进行注释。
例如,如果几个资源endpoint需要访问某个消息总线来处理请求,该怎么办?当然,当服务类本身不是资源但被资源使用时,有一些方法可以注册一个单例服务类并将其注入到资源中。 我看到的提供程序或自定义HK2绑定的所有示例都引用了资源。 我发现的最接近我所要找的是这个问题: 使用内置的Jersey依赖注入在Jersey 2中创建一个简单的单例类会遇到麻烦 请注意,编程方式将是最有用的,我没有使用xml文
问题内容: 我正在通过DropWizard 0.7.1使用Jersey / JAX-RS公开RESTful服务端点。我所有的实体POJO都用JAX- RS和Hibernate / JSR-303 bean验证注释进行了注释,如下所示: 当资源方法接收到这些POJO之一作为输入时(实际上,DropWizard已经将HTTP实体JSON反序列化为一个实例),我想根据Hibernate / Bean V
我正在通过DropWizard 0.7.1使用泽西/JAX-RS来公开RESTful服务endpoint。我已经用JAX-RS和HiberNate/JSR-303 bean验证注释注释了我所有的实体POJO,如下所示: 当资源方法接收到其中一个POJO作为输入时(在引擎盖下,DropWizard已经将HTTP实体JSON反序列化为
我们可以通过 实现创建JAX-RS示例。 为此,需要加载 jersey相关jar文件或使用Maven框架。 在这个例子中,我们使用jersey jar文件来实现JAX-RS jersey示例。 Jersey Jar文件下载网址:https://jersey.github.io/download.html 打开Eclipse,创建一个Web工程: restfuljersey,如下图所示 - JAX-
service.java: sqlDataProvider.java: 如果在Glassfish服务器中部署此servlet并执行请求,将引发以下异常: 亲切地问候帕斯卡
我在尝试用@Inject搭配JAX-RS。我的问题是@Inject只在Servlets中有效。在JAX资源中,我得到一个空指针,我不知道我做错了什么。我的代码如下所示: Pom.xml文件 豆类.xml 网页.xml包含: <代码> 工人阶级: 服务控制器。startTweetListener()和serviceController。stopTweetListener()工作。没有空指针。 非工人