如果给我一个相对路径(例如path=“/foo/1/bar”
),我如何找出将使用哪个资源的方法来处理请求(在当前示例中是fooresource.bar
方法)?
我尝试使用反射,通过查看所有@path
注释类和方法,并构建一个映射来指向这些方法。但是,这并不理想,因为我必须针对所有现有的@path
测试给定的相对路径。
下面是一个示例资源:
@Path("/foo")
public class FooResource {
@GET
@Path("{id}/bar")
public String bar(@PathParam("id") int barId)
{
return "Hello Bar " + Integer(barId).toString();
}
@POST
@Path("/biz")
public String biz(BisRequest biz)
{
return "Hello Biz";
}
}
而不是我目前的解决方案,即:
mapper = new HashMap<String, Method>();
/** content of mapper
String "/foo/{id}/bar" -> java.lang.reflect.Method FooResource.bar
String "/foo/biz" -> java.lang.reflect.Method FooResource.biz
*/
public Method findResourceMethodForPath(String path, HashMap<String, Method> mapper) {
String correctKey = findCorrectKeyForPath(path, mapper.keySet());
return mapper.get(correctKey);
}
是否有一种更干净的方法来实现FindResourceMethodForPath
,而不必使用上面代码段中定义的映射器
?
通过使用DropWizard提供的筛选器找到了答案。
public void filter(ContainerRequestContext requestContext) {
UriRoutingContext routingContext = (UriRoutingContext) requestContext.getUriInfo();
ResourceMethodInvoker invoker = (ResourceMethodInvoker) routingContext.getInflector();
Class<?> className = invoker.getResourceClass();
Method methodName = invoker.getResourceMethod();
}
从这篇文章中找到的答案:如何在ContainerRequestFilter中检索请求的匹配资源
问题内容: 如何在netbeans项目的类路径中添加文件夹(例如,包含arts的资源文件夹)?我设法通过编辑项目的NB生成的jar文件(即其MANIFEST.MF文件+手动复制资源)来手动完成此操作,但是应该有一种方法可以告诉netbeans并注意资源,不是吗? 文件夹结构如下所示: 我不想将艺术品包装到罐子里,因为我希望艺术品可以轻松更换。如果我将art文件夹添加到src文件夹,则NB可以正常编
我有一个多模块maven应用程序,它具有以下结构: 来自子模块的Java类应该访问它们资源目录中的php文件,并使用Quercus Resin执行它。然而,当项目打包在war中时,子模块被打包到存储在web-app/web-inf/lib中的jar文件中,这使得无法执行php文件。为了解决这个问题,我找到了将所有php文件从子模块复制到web-app中的解决方案,这样当它在Tomcat中提取时,它
我有一个有向图,有大约1000个顶点和3000条边,其中包含圈。 我试图从给定顶点找到所有下游(外)路径。 使用以下Gremlin查询时 对于某些路径,由于周期的原因,需要花费很长时间才能得到结果,尽管simplePath步骤应该可以防止这种情况发生。 我尝试优化查询,并使用“聚合”步骤和“不使用”步骤两次遍历同一顶点,但现在跳过了一些顶点。 谢谢
我有一个一般性的问题,关于如何在边没有权的无向图中找到最短路径和最长路径。 我们需要使用DFS算法来寻找图中的最长路径,而我们需要使用BFS算法来寻找图中的最短路径,这是一个正确的结论吗?
问题内容: 使用readlink函数作为“如何在C中找到可执行文件的位置”的解决方案?,我如何将路径转换为char数组?另外,变量buf和bufsize代表什么,以及如何初始化它们? 编辑:我试图获取当前正在运行的程序的路径,就像上面链接的问题一样。这个问题的答案说来有用。我不知道如何在我的程序中实现它。我试过了: 这显然是不正确的。 问题答案: 这使用的readlink()函数正确的正确使用功能
我正在使用Win8上的Eclipse ADT+ADK包adt-bundle-windows-x86-20131030。我还安装了Java JDK1.6,我看到它是安装在C:\Program Files(x86)\Java\JDK1.6.0Android ADT对我来说很好(它编译了我尝试过的几个项目--hello world,我也能在设备上运行这个应用程序) 我知道Eclipse-ADT使用JAV