Tag: resteasy

RESTEASY003145:无法找到内容类型application / json的MessageBodyReader并键入class org.keycloak.representations.AccessTokenResponse

我正在尝试测试Keycloak REST API。 Instaled版本2.1.0.Final。 我可以通过浏览器使用SSL访问管理员而不会出现问题。 我正在使用上面的代码: Keycloak keycloakClient = KeycloakBuilder.builder() .serverUrl(“https://keycloak.intra.rps.com.br/auth”) .realm(“testrealm”) .username(“development”) .password(“development”) .clientId(“admin-cli”) .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()) .build(); List rr = keycloakClient.realms().findAll(); 并得到错误: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse javax.ws.rs.client.ResponseProcessingException: javax.ws.rs.ProcessingException: RESTEASY003145: Unable to find a MessageBodyReader of content-type application/json and type class org.keycloak.representations.AccessTokenResponse at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:141) at […]

在Tomcat 7.0.47中部署RestEasy服务

我正在使用RestEasy开发Rest服务。 我需要在Tomcat中部署。 我认为我的web.xml中存在问题 这是我的web.xml: MyServices resteasy.scan true resteasy.servlet.mapping.prefix /services resteasy-servlet org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher javax.ws.rs.Application com.service.services.MessageApplication resteasy-servlet /services/* 我有服务: @GET @Path(“/hello”) @Produces({MediaType.APPLICATION_JSON}) public String Hello(String name) { System.out.println(“Hello “+name); return(“Hello “+name); } 当我部署时,我调用http://localhost:8080/MyServices/services/hello?name=Jesus Tomcat显示此错误: java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) […]

RestEasy:如何validationClientResponse正文?

我有一个REST端点 @GET @Produces(MediaType.APPLICATION_JSON) public Response getVariables(@QueryParam(“_activeonly”) @DefaultValue(“no”) @Nonnull final Active active) { switch(active){ case yes: return Response.ok(VariablePresentation.getPresentationVariables(variableManager.getActiveVariables())).build(); case no: return Response.ok(VariablePresentation.getPresentationVariables(variableManager.getVariables())).build(); } throw new WebApplicationException(Response.Status.BAD_REQUEST); } 返回VariablePresentation List的JSON 。 VariablePresentaion看起来像 @XmlRootElement public class VariablePresentation { private final UUID id; private final String name; private final VariableType type; public VariablePresentation(@Nonnull final Variable variable) { id = […]

ClientRequest,如何正确地将POJO序列化为json数据? 找不到内容类型application / json类型的writer:

对于REST服务(RESTeasy),我创建了JUnit测试用例,例如: @Test public void a100_insertAddressTest() throws Exception { Address addr = new Address(1, “testStreet”, “1”, (short) 1234, “testCity”); ClientRequest request = new ClientRequest(BASE_URL + “customerID/{id}”, sslExecutor_schusb); request.body(MediaType.APPLICATION_XML, addr).pathParameter( “id”, 1); ClientResponse response = request.post(String.class); Assert.assertEquals(201, response.getStatus()); response.releaseConnection(); request.clear(); } 如果我将请求正文的媒体类型更改为“application / json”,则测试用例将失败并显示错误: java.lang.RuntimeException: could not find writer for content-type application/json type: at.fhj.ase.dao.data.Address at org.jboss.resteasy.client.ClientRequest.writeRequestBody(ClientRequest.java:469) at […]

Resteasy可以查看JAX-RS方法的参数类型吗?

我们使用Resteasy 3.0.9作为我们的JAX-RS Web服务,最近切换到3.0.19,我们开始看到很多RESTEASY002142: Multiple resource methods match request警告。 例如,我们有以下方法: @Path(“/{id}”) public String getSome(UUID id) @Path(“/{id}”) public String getSome(int id) 我不确定它在3.0.9中是如何工作的,可能,我们非常幸运,因为Resteasy似乎从所有候选人中选择了第一种方法(以及3.0.19种候选方法)。 一种解决方案是明确指定正则表达式: @Path(“/{id : [0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}”) 但有没有办法以某种方式告诉Resteasy查看方法参数并自动构造适当的正则表达式?

是否可以禁用RESTEasy的RoleBasedSecurityFilter.java?

我正在开发一个使用JBoss RESTEasy(resteasy-jaxrs-3.0.8)的Web应用程序,但我想禁用RoleBasedSecurityFilter.java并且只使用我自己的自定义SecurityInterceptor类(它也实现了javax.ws.rs.container.ContainerRequestFilter如RoleBasedSecurityFilter类所做的那样,它们都是安全filter。 原因是RoleBasedSecurityFilter.java中的第43行调用了一个isUserInRole()方法 ,该方法在我的应用程序中始终返回false。 结果导致抛出ForbiddenException ,这会阻止用户访问他应该有权访问的资源。 我真的希望能够使用@RolesAllowed批注来声明哪些角色可以访问某些function,但正如所解释的, RoleBasedSecurityFilter类阻止了这一点。 所以我的问题是,有没有人知道如何禁用一个特定的RESTEasyfilter(即RoleBasedSecurityFilter )? 我想它可以在部署描述符(web.xml)中完成(例如使用context-param元素 ),但我不知道如何实际禁用filter。 我意识到我也可以更改我正在使用的RESTEasy库中的RoleBasedSecurityFilter.java文件中的行,但是这种方法对我来说太难了,因为我不希望每次升级时都不得不再次应用这个hack RESTEasy版本。 (不知道那会是多久……)

动态更改RESTEasy服务返回类型

我可以在RESTEasy服务中更改@Produces注释参数的值吗? 我给出的任务是将多种格式报告集成到现有的报告系统中。 因此动态更改@Produces注释参数会对我有所帮助。 提前致谢!

如何在RESTEasy 3.0客户端框架中设置HTTP标头(使用ResteasyClientBuilder和ResteasyWebTarget)?

我试图弄清楚如何设置类似于此处解释的HTTP标头: 如何在RESTEasy客户端框架中设置HTTP标头? 或者在这里 RESTEasy客户端框架身份validation凭据 但是,我想使用RESTeasy 3.0function(ResteasyClientBuilder和ResteasyWebtarget)而不是已弃用的ProxyFactory,如下所述: 什么是Resteasy ProxyFactory类的替代品 只是为了澄清,我也不想在每个请求上设置标头/不希望它们被传递给客户端,我希望它们在ResteasyClientBuilder / ResteasyWebtarget级别上设置,如果可能的话。

RESTEasy无法识别自定义邮件正文编写器

我的MessageBodyWriter @Provider @Produces(“text/csv”) public class CSVMessageBodyWriter implements MessageBodyWriter public static final String CONTENT_DISPOSITION_HEADER = “Content-Disposition”; //$NON-NLS-1$ private final static HeaderDelegate header = RuntimeDelegate.getInstance().createHeaderDelegate(ContentDispositionHeader.class); public long getSize(JaxbList t, Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { return -1; } public boolean isWriteable(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { return CsvSerializer.class.isAssignableFrom(type); } public void […]

RESTEasy – javax.ws.rs.NotFoundException:无法找到完整路径的资源

我试图在GWT项目中使用RESTEasy实现REST服务,但是当我进入相应的URI时,应用程序返回: Grave: failed to execute javax.ws.rs.NotFoundException: Could not find resource for full path: http://127.0.0.1:8888/api/matches at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 我的web.xml是: resteasy.servlet.mapping.prefix /api Resteasy org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher javax.ws.rs.Application eii.api.MatchApplication Resteasy /api/* 应用程序的实现: public class MatchApplication extends Application { private Set singletons = new HashSet(); private […]