我正在尝试在Jersey中编写一个通用函数,该函数可用于通过REST获取相同类型的对象列表。我基于此论坛中的信息进行链接:
@Override
public <T> List<T> fetchResourceAsList(String url) {
ClientConfig cc = new DefaultClientConfig();
Client c = Client.create(cc);
if (userName!=null && password!=null) {
c.addFilter(new HTTPBasicAuthFilter(userName, password));
}
WebResource resource = c.resource(url);
return resource.get(new GenericType<List<T>>() {});
}
但是,这不起作用。如果我尝试执行它,则会出现以下错误:SEVERE: A message body reader for Java class java.util.List, and Java type java.util.List<T>, and MIME media type application/xml was not found
。
但是,如果我编写此函数时没有进行模板化(用实际的类名替换T),则可以正常工作。当然,这种方式会使函数失去其意义。
有没有办法解决这个问题?
我找到了解决方案
https://java.net/projects/jersey/lists/users/archive/2011-08/message/37
public <T> List<T> getAll(final Class<T> clazz) {
ParameterizedType parameterizedGenericType = new ParameterizedType() {
public Type[] getActualTypeArguments() {
return new Type[] { clazz };
}
public Type getRawType() {
return List.class;
}
public Type getOwnerType() {
return List.class;
}
};
GenericType<List<T>> genericType = new GenericType<List<T>>(
parameterizedGenericType) {
};
return service.path(Path.ROOT).path(clazz.getSimpleName())
.accept(MediaType.APPLICATION_XML).get(genericType);
}
我正在开发一个REST Web服务,其中我使用URL中的ID来指定患者,如下所示: <代码>WS/服务/患者/1 其中“1”是患者的id。所以,在代码中,我这样指定: 我在一个例子中看到了它,但是我的失败了。我得到了这个错误: 通用域名格式。太阳运动衫应用程序编程接口。容器ContainerException:方法,public void PresentationLayer。PatientReso
我决定在这部分替换Web.XML: 我指向servlet容器Jersey,它将接受对REST-Controllers的请求,表明在启动时有必要扫描路径com . skillsimprover . REST examples . REST上的包REST,并表明资源的所有方法和类的基URI都填充了/api/* 从 JAX-RS 2.x 版本开始,可以使用应用程序类或资源配置类来注册包和资源。 我执行了
问题内容: 分析了整个互联网,但无法弄清楚为什么会发生这种情况。我有一个最简单的项目(使用jersey-quickstart- grizzly2原型),并且只有一个Jersey资源。我将Guice用作DI,因为CDI也不想与Jersey合作。问题在于,Guice在注入Jersey的资源时无法解析要使用的类。它在外面很好用,但不适用于泽西岛。这是泽西岛的资源: 传输接口: 它的实现: 遵循Googl
我正在Google应用引擎中部署一个使用Jersey的示例应用程序。然而,当我尝试对REST资源执行GET或POST时,我得到一个-404 NOT FOUND错误。看来我漏掉了什么。 REST资源代码: 我包括了以下几个罐子: Jar Jersey-Client-1.12.Jar Jersey-Core-1.12.Jar Jersey-JSON-1.12.Jar Jersey-Server-1.1
我正在泽西岛应用程序中使用 CDI。在根资源上,CDI 注入按预期工作,但每当我返回子资源时,CDI 注入源都不可用。 具有子资源定位器的根资源: 子资源: 错误: 我正在使用和Weld依赖项,在Undertow上运行,并将Weld servlet侦听器添加到部署中。 同样,对根资源的相同注入确实有效。< code>@Named("name ")字符串由< code>@ApplicationSco