作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须对其余服务操作进行建模,在这些操作中我试图创建一个 URI 来访问 Java 内部类。让我知道这是否可以使用 Rest Web 服务来实现?我正在使用轻松休息来提供服务。
编辑:(使用 peeskillet 答案提供的代码)
javax.ws.rs.ProcessingException: Unable to invoke request
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:287)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:407)
Caused by: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:8081 refused
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:283)
... 26 more
Caused by: java.net.ConnectException: Connection refused
最佳答案
Please advise if a resource class can be made as Inner class to other class
是的,这是可能的,但我们不能简单地注释内部类路径@Path
并期望调用到达那里。我们需要使用“子资源定位器”。基本上,它可以是仅用 @Path
注释的方法,它将返回内部资源类的实例。类似的东西
@Path("/messages")
public class MessageResource {
@GET
@Path("/{id}")
public Response getMessage(@PathParam("id") int id) {
return Response.ok("messages, id: " + id).build();
}
@Path("/{id}/comments")
public CommentsResource getComments() {
return new CommentsResource();
}
public class CommentsResource {
@GET
@Path("/{id}")
public Response getComment(@PathParam("id") int id) {
return Response.ok("Hello Sub-Resource Locators").build();
}
}
}
我们可以测试一下
@Test
public void testResteasy() {
WebTarget target = client.target(TestPortProvider.generateURL(BASE_URI))
.path("messages").path("1234").path("comments").path("5678");
Response response = target.request().get();
System.out.println("Status:" + response.getStatus());
System.out.println("Response: " + response.readEntity(String.class));
response.close();
}
我们将得到响应Hello Sub-Resource Locators
进一步阅读
<小时/>编辑:
根据您提供的错误,TestPortProvider
将使用端口 8081,并以 http://localhost:8081
开头您的 URI。您传递给 gererateURL
的内容将被附加。通常我将其用于嵌入式服务器测试。但如果您正在运行实际的服务器,它很可能位于端口 8080 上。我建议只传递字符串基本 URL,例如:
WebTarget target = client.target("http://localhost:8080/MyApp/rest")
.path("messages").path("1234").path("comments").path("5678");
关于java - Rest Service URI 映射到 Java 内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246399/
我是一名优秀的程序员,十分优秀!