Tag: jersey 2.0

使用Jersey 2从我的资源类中提取接口时“无法找到合适的构造函数”

我怎样才能让泽西明白它应该使用具体的类而不是资源的接口? 我有一个有Status资源的工作应用程序。 然后我提取了一个接口IStatus ,并在那里移动了所有JAX-RS注释。 现在,我得到: org.glassfish.hk2.api.MultiException A MultiException has 1 exceptions. They are:1. java.lang.NoSuchMethodException: Could not find a suitable constructor in resource.IStatus class 我知道这适用于RestEasy。 有什么方法可以让它与泽西岛一起使用吗?

如何在测试类中为所有测试启动Jersey测试容器(Grizzly)一次?

我正在努力修复其中一个项目中的集成测试。 目前,所有集成测试类都扩展了JerseyTest类。 通过JerseyTest类,我意识到它使用Junit的Before和After注释为每个测试方法启动和停止容器。 为什么这有必要? 如果我们提起容器一次,运行测试并在结束时将其关闭,这还不够吗? 我们也使用Spring,上下文初始化需要时间。 在Junit4之前,我们通过使用布尔标志手动处理它来解决这个限制。 @Before public void setup() { if(!containerStarted) { // start containerStarted = true; } // else do nothing }

将Jersey客户端1.x升级到2.x时,UriBuilder上的AbstractMethodError

我们正在将我们的Web应用程序(在Tomcat7上运行)从Jersey 1.7升级到Jersey 2.4.1。 我设法让服务器端正常工作,但是使用jersey-client的JUnit测试抛出了AbstractMethodError:java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder; at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119) at org.glassfish.jersey.client.JerseyWebTarget.(JerseyWebTarget.java:72) at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:180) at org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:69) at ******.test.resources.ResourceConfig.getResourceWithCredentialsAt(ResourceConfig.java:144) at ******.test.resources.ResourceConfig.getResourceAsUserAt(ResourceConfig.java:99) at ******.test.resources.UsersResourceTest.testGetAuthorizedUser(UsersResourceTest.java:251) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at […]

泽西2 + HK2 – 自动绑定classess

继续主题泽西2 + HK2 – @ApplicationScoped无效 。 我已经知道了,如何绑定类以便@Inject正确。 你有任何想法,如何自动化这个过程? 将所有单个服务放在bind语句中似乎在我的应用程序中非常难闻。

泽西和spring的全球exception处理?

我正在使用Jersey&Spring 3.2和Open CMIS开发RESTful Web服务。 我没有使用Spring的MVC模式,它只是Spring IOC和Jersey SpringServlet,控制器类就像下面的代码 @GET @Path(“/{objId:.+}”) @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public statusMsg addObject(@PathParam(“objId”) String objId{ return repoService.addObject(objId); } 在repoService我正在执行业务逻辑以使用CMIS添加对象,我的问题是我正在捕获与CMIS相关的5个exception然后基本exception即exception但是对于每个服务方法我必须重复它我不想做。 我在Google上搜索,发现@ControllerAdvice是解决此类问题的最佳解决方案,您可以定义所有已检查和未检查的exception以及从应用程序中删除所有try catch块的位置。 但它只适用于MVC模式。 问题1:有没有办法在Jersey-Spring框架中使用它? 经过更多的研究后,我发现Jersey提供了ExceptionMapper来处理自定义exception,但我想捕获更多的CMISexception或默认的exception或IOexception等。 问题2:如何使用ExceptionMapper执行此操作? 问题3:我是否采用了正确的方法,或者您是否建议采用更好的方法来处理此类问题。 提前致谢。

如何在jersey 2.0中使用hk2注入常量?

如何在jersey中使用HK2将常量注入某个类? 有了Guice,我可以有类似的课程 public class DependsOnFoo { @Inject public DependsOnFoo(@Named(“FOO”) String foo) { … } … } 我会在注入器中配置类似的东西 bind(String.class).named(“FOO”).toInstance(new String(“foo”)) HK2中的等价物(如果有的话)是多少?

ResourceContext.matchResource(URI)的Jersey 2替换是什么?

如何在Jersey 2.0下找出任意URI映射到的资源? 在Jersey 1.x下,我使用ResourceContext.matchResource(URI) 。 我正在尝试做什么 :我正在尝试处理通过URI引用另一个资源的传入请求。 例如,这是将用户链接到部门的操作。 POST /departments/5 { “user”: “http://example.com/users/10” } POST / departments / 5解析为: class DepartmentResource { @POST void linkUser() { … } } 为了兑现这个请求,我需要将URI解析回UserResource并从那里解析为其数据库ID。 将@Context UriInfo添加到linkUser()将无济于事,因为此UriInfo对应于部门的URI而不是用户的URI。 更新 :我在https://github.com/eclipse-ee4j/jersey/issues/2444上提交了一份错误报告 UPDATE2 :发布了一个后续问题: Jersey2:从资源导航到实例

搬到jersey后性能下降2

我们正在使用弹簧4,嵌入式docker9和平针织物的服务器上工作。 最近,我们搬到了jersey2.13,我们发现性能有所下降。 我使用YourKit进行了一些调查。 我看到在jersey的reflection中有大量的CPU使用率。 此外,Yourkit快照中有许多NoSuchMethodExceptions和ClassNotFoundExceptions 。 是否有任何jersey配置或最佳做法可以避免这个问题,或优化jersey? 或者这可能是jersey2中的一个已知问题? 以下是来自YourKit的两个截图,显示了排除套接字读取( java.net.SocketInputStream.socketRead0 )后的热点。 第一个是Merged Callees: 第二个是Back Trace: 谢谢。

如何将列表作为来自jersey2客户端的响应

我试过这个, List list=client.target(url). request(MediaType.APPLICATION_JSON).get(new GenericType<List>(){}); 但我没有得到列表而是我得到空值

从现有REST API生成Swagger文档

鉴于现有的JAX-RS注释API接受并返回带有jackson-annotated类型的json,有没有办法可以生成一些YAML Swagger文档? 我的计划B是编写一些使用reflection来查找REST注释类型的代码,创建其参数和返回的哈希映射,然后为Jackson注释抓取这些类,并以这种方式生成文档。 我更愿意使用已经存在的解决方案来编写一次性的东西。 我发现这个Swagger模块声称它可以解析Jackson的配置( https://github.com/FasterXML/jackson-module-swagger ),但我不太了解Swagger了解哪些模块以及我是否可以使用它来从现有代码生成Swagger。