MSF4J和@MatrixParam

时间:2017-06-01 11:52:53

标签: wso2 msf4j

伙计们,我发现似乎是/(MS中的错误?)MSF4J的问题,因为在URI中包含@MatrixParam注释变量会导致受影响的(微)服务无限期地“挂起”,或者如果通过浏览器,为路径/端点提供“404 Not Found”消息,即使是正确的。

这是一个代码片段来说明问题 - 它编译好(eclipse / maven)并使用microservicesrunner()以通常的方式部署而没有错误。

package org.test.service;

import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("books")

public class MPTest {   // MatrixParam Test

   @GET
   @Produces(MediaType.TEXT_PLAIN)
   @Path("/query")

   // method to respond to 'GET' requests
   public Response getListOfBooks(@MatrixParam("Author") String author) {

   // do something in here to get book data from DB and sort by titles
   List<String> titles = .......;

   return Response.status(200) .entity("List of Books by " +author+ "ordered by title " + titles).build();
   }
}

使用此代码片段,访问URL“(host:8080)/ books / query; Author = MickeyMouse”应该导致该作者的书籍列表从DB中检索(我省略了实际的代码)所以为了清楚起见,因为它与这篇文章无关。)

然而,它没有到达那里,所以代码没有执行。据我所知,调试器没有检索到@MatricParam值 - 它会一直为空,直到进程超时。像curl和wget这样的东西只会挂起,直到它们超时,并且从浏览器中,我能得到的最好的是URI找不到404错误,即使它是有效的。

但是,如果我用@PathParam替换@MatrixParam它可以很好地工作,并且我可以获得其完整性检索的URL字符串。我得到的URI是预期的 - 没有奇怪的十六进制字符,没有拼写错误,等等。输入的URI是您得到的。那么,没问题。

行为在各种平台(Linux的几种风格和三种版本的Windoze)中也是一致的,因此它与操作系统本身无关。同样,我在多个客户端和工具中获得相同的行为,因此它也不是问题。

所以,它似乎是MSF4J框架/域中的一个问题,我可以在这里使用一些支持/帮助/建议,因为我已经达到了撕裂我的头发.....任何想法,伙计们?

我可以找到类似问题的唯一参考被关闭为“关闭主题”而没有回复(请参阅Rest API Matrix param annotation)所以我认为这需要重新打开,因为它似乎是一个真正的问题.. ..

问候,并提前感谢任何帮助, 瑞克

1 个答案:

答案 0 :(得分:0)

@MatrixParam is not supported with MSF4J at the moment. You can create a GitHub issue. So we can implement that support in future releases.