gpt4 book ai didi

java - 如何将我的注册提供者与动态创建的 Jersey 资源类一起使用?

转载 作者:行者123 更新时间:2023-11-30 10:06:35 25 4
gpt4 key购买 nike

我只是想知道我们如何将我们注册的提供者(MessageBodyReader 和 MessageBodyWriter)与动态创建的 jersey 资源类一起使用,即通过编程 jersey 资源 api 以编程方式创建的 jersey 资源,例如

 Resource.Builder resourceBuilder = Resource.builder();
resourceBuilder.path("helloworld/{name}");

ResourceMethod.Builder methodBuilder = resourceBuilder.addMethod("POST");
methodBuilder.produces(MediaType.TEXT_PLAIN_TYPE).consumes(MediaType.TEXT_PLAIN_TYPE)
.handledBy(new MyInflector());
Resource resource = resourceBuilder.build();
registerResources(resource);

现在如何在MyInflector类中使用我注册的MessageBodyReader和Writer如下

public class MyInflector implements Inflector<ContainerRequestContext, String>{

@Override
public String apply(ContainerRequestContext arg0) {
System.out.println("Processing request");
MultivaluedMap<String, String> pParams =arg0.getUriInfo().getPathParameters();
InputStream stream=arg0.getEntityStream();
if (stream != null) {
Writer writer = new StringWriter();

char[] buffer = new char[5120];
try {
Reader reader = new BufferedReader(
new InputStreamReader(stream, "UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
stream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return writer.toString();
} else {
return "";
}
}

}

最佳答案

您可以做的是将 ContainerRequestContext 转换为 ContainerRequest(这是 ContainerRequestContext 接口(interface)的 Jersey 实现。有了这个类,您可以调用 containerRequest.readEntity(Pojo.class)。这将导致调用 Pojo.class 类的读取器(假设内容类型也与媒体匹配输入端点消耗)。

@Override
public String apply(ContainerRequestContext requestContext) {
ContainerRequest containerRequest = (ContainerRequest)requestContext;
Model model = containerRequest.readEntity(Model.class);
...
}

关于java - 如何将我的注册提供者与动态创建的 Jersey 资源类一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54594595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com