问题标签 [spring-jersey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
557 浏览

rest - REST webservice - 使用 Spring Jersey 插件从 Jersey 1 升级到 Jersey 2 时出错

我目前正在使用 Jersey 1.8 和 Jersey Spring 插件 1.8,使用 JBoss EAP 6.3,它在 JDK 1.6 上运行良好。现在在升级到 JDK 1.8 和 JBoss EAP 6.4 时,绑定响应[1]时不支持 Jersey 1.0 。之后我将 Jersey 和 Jersey+Spring 版本升级到 2.4.1 [2]但是我得到了“异常:java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util /地图;” 启动服务器时出错。有人可以让我知道如何解决此问题或使用此 JDK 1.8 迁移实施的任何其他可能的解决方案吗?

  1. 尝试检查 mvn 依赖关系:树并从 axis2-transport-local jar 中删除了 jsr311-api jar,但仍然得到方法未找到错误 [3]
  2. 尝试注释掉“/jboss-eap-6.4\modules\system\layers\base\javax\ws\rs\api\main\module.xml” [5] 中配置的资源,并在启动时出现模块未找到错误服务器。即使这可行,也不确定这是正确的方法。

    [1] 绑定错误 JDK 1.8 和 Jersey 1.8

    20:01:12,484 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/tst02].[jersey-serlvet]] (ajp-/10.78.180.83:9109- 14) JBWEB000236: Servlet jersey-serlvet 的 Servlet.service() 抛出异常:java.lang.AbstractMethodError at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findSerializer(AnnotationIntrospector.java:1148) [jackson-mapper-asl- 1.9.9.redhat-4.jar:1.9.9.redhat-4] 在 org.codehaus.jackson.map.ser.BasicSerializerFactory.findSerializerFromAnnotation(BasicSerializerFactory.java:366) [jackson-mapper-asl-1.9.9。 redhat-4.jar:1.9.9.redhat-4] 在 org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:252) [jackson-mapper-asl-1.9.9.redhat-4. jar:1.9.9.redhat-4] 在 org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782)[jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4] 在 org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:735)[jackson -mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4]

    [2] 使用 2.4.1 升级到 Jersey 和 Jersey+Spring 版本后出错

    06:12:53,208 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/tst01]] (ServerService 线程池 -- 113) JBWEB000289: Servlet jersey-serlvet 抛出负载() 异常:java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; 在 org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:272) [jersey-server-2.4.1.jar:] 在 org.glassfish.jersey.servlet.WebComponent.(WebComponent.java:302) [jersey -container-servlet-core-2.4.1.jar:] 在 org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167) [jersey-container-servlet-core-2.4.1.jar:] 在org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349) [jersey-container-servlet-core-2.4.1.jar:] 在 javax.servlet.GenericServlet.init(GenericServlet.java:242) [ jboss-servlet-api_3.0_spec-1.0.2。

    [4] 我们模块的 POM.xml Maven 依赖项

    [5] JBoss 模块.xml -->

    /li>
0 投票
1 回答
236 浏览

spring-mvc - 在 Spring + Jersey 应用程序中拦截请求和响应

我有 Spring Boot 应用程序,它同时具有 Jersey 端点和 Spring mvc 端点。我想为两种类型的 enpoint 拦截来自单个点的请求和响应。

到目前为止,我知道有三种选择可以做到这一点。那些是Filter-Spring InterceptorSpring @ControllerAdvice。其中InterceptorControllerAdvice仅适用于 Spring 端点,不适用于 Jersey 端点。Filter到目前为止,只有这两个端点都有效。有没有其他方法可以拦截 Jersey 和 Spring mvc 的请求/响应?

提前致谢。

0 投票
1 回答
751 浏览

java - 泽西工厂尝试两次创建 @Context 变量

我对Jersey 2.26Spring Boot 2有疑问。

我添加了一个工厂来将@Context变量注入方法,但它做了两次,第一次是在方法之前,然后是在方法之后:

我有一个创建这些用户的工厂:

在球衣配置中,我注册了这个工厂:

它以前运行良好,但在我将应用程序升级到 jersey 2.26 和 spring boot 2 后,它停止工作并抛出异常:

出现异常是因为 UserFactory 被调用了两次。首先在调用 getUserEntitlements 之前调用它,以注入用户。但是在方法返回之后,它会再次被调用(这次它得到一个不允许某些操作的 HttpRequest 实现)。

为什么它可以被调用两次?好像我会要求它增强请求和响应。

0 投票
1 回答
806 浏览

jsp - Jsp 没有在 Spring Boot 应用程序中由 Jersey 编译

我正在尝试使用 Jersey 设置 Spring Boot 应用程序。Rest API 工作正常,但视图(jsp)在浏览器上呈现为纯文本。一旦我包含它,我尝试在我的依赖项中包含 jstl;服务器开始返回空白响应。

请让我知道我在这里缺少什么。

代码结构:

在此处输入图像描述

下面是我的代码:

JerseyConfig.java

HelloController.java

HelloJSPController

SpringJerseyApplication.java

应用程序属性

索引.jsp

编辑:

pom.xml

以下是我尝试访问 JSP 时得到的响应 在此处输入图像描述

如果我取消注释 tomcat-embed-jasper,我的应用程序不会出现。它抛出以下异常:

0 投票
1 回答
532 浏览

java - @Autowired 给出空指针异常

我已经完成了@Autowired 注释,并且@Component 注释正在调用和调用类。尽管如此,我在“ServiceResource.java”-> serviceValidator 值中得到空指针异常为空。

请帮助我知道我哪里出错了?

服务资源.java

服务验证器.java

服务管理器.java

Web.xml

应用上下文

pom.xml

0 投票
1 回答
312 浏览

java - 泽西岛 没有为 SingleJust 找到序列化程序

我正在尝试Single.just(..)从我的端点返回一个。我使用 jersey 和 rx-jersey 创建了它。我在浏览器上不断收到此消息:

这是我的代码:-

泽西配置:

我的终点

用户:-

0 投票
0 回答
626 浏览

java - java.lang.AssertionError: 预期状态:<200> 但是是:<404> 使用 jersy-spring

控制器文件[LogController.java 文件]:

单元测试代码:

我们使用 Maven+ jersy 框架进行宁静的服务开发,但使用 maven:spring,mockito 进行单元测试。

在上面执行之后,我得到了

错误跟踪:

java.lang.AssertionError:预期状态:<200> 但在 org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:54) 处为 <404> 在 org.springframework.test.util.AssertionErrors.assertEquals( AssertionErrors.java:81) 在 org.springframework.test.web.servlet.result.StatusResultMatchers$10.match(StatusResultMatchers.java:664) 在 org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java: 171) 在 Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke 的 Tests.LogControllerLuaTest.testgetLogServerInfo(LogControllerLuaTest.java:106) (DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.junit.runners.model。FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47 ) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 在 org.junit.runners 的 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)。 ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners .ParentRunner$3.run(ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner。runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners .ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java :678) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse .jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 在 org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse .jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal .junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 在 org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)268) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal 的 org.junit.runners.ParentRunner.run(ParentRunner.java:363) .junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:192)268) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal 的 org.junit.runners.ParentRunner.run(ParentRunner.java:363) .junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:192)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.runTests(RemoteTestRunner.java:459) 运行(TestExecution.java:38) java:678) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.runTests(RemoteTestRunner.java:459) 运行(TestExecution.java:38) java:678) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

如果需要任何其他inf,请评论

0 投票
2 回答
786 浏览

java - 测试中未找到带有 Jersey 的 Spring Boot 中的处理程序方法

当应用程序启动并从测试中访问时,Spring Boot / Jersey 找不到处理程序方法。如果我单独启动应用程序并使用http://localhost:8080/demo浏览器访问一切都很好。

日志说:“没有找到 [/demo] 的处理程序方法”。相关的日志输出:

该应用程序包含以下类(用 Kotlin 编写):

资源

JerseyConfig

应用程序:

失败的测试:

如果我使用 Jersey 客户端进行测试,我会得到同样的错误:

构建.gradle:

测试代码本身似乎没问题,因为当我将测试方法的主体替换为Thread.sleep(...)然后从浏览器访问服务器时,我得到了同样的错误(404,由于“没有找到 [/demo] 的处理程序方法” )。

为什么在测试中找不到处理程序方法?我必须改变什么?

0 投票
0 回答
110 浏览

spring - 忽略war maven tomcat插件中的jar包装?

我正在使用 maven Maven Tomcat 8 插件在本地启动我的 tomcat 服务器并使用 intellij IDE 部署一个 war 文件。

出于某种原因,当我尝试使用 maven tomcat 8 插件启动它时,它显示以下堆栈跟踪并且没有起床。

但是当我尝试使用单独的 tomcat 容器(不使用 maven tomcat 8 插件或不支持 IDE)时,一切正常。

我调查了发生这种情况是因为我的 war 文件中捆绑了一个库( spring-jersey3.jar )。当我从战争中删除它并尝试使用 maven tomcat 插件时,也一切正常。我发现这个错误发生是因为它试图在启动时初始化一个 spring 应用程序上下文。但只有当我尝试使用 maven tomcat 插件时才会发生这种情况。

无论如何,我的工作需要那个库。我不能把它排除在战争之外。

有谁知道解决这个问题的方法?它可能是

  • 配置在启动时禁用初始化 spring 应用程序上下文。
  • 配置 maven tomcat 8 插件以忽略该 lib 或 init 进程。
  • 或任何其他不排除 lib 的方法。
0 投票
1 回答
1318 浏览

json - json rootelement 在 JSON 响应中显示 ArrayList 而不是 @JsonRootName("TestClass") 作为根元素

我正在研究 maven SpringBoot 微服务应用程序,我希望 json 字符串带有我已经提到的根元素,但它给了我带有 ArrayList 作为根元素的 json 字符串。

报告了很多类似的问题,但没有一个解决方案对我有用。

预期是

实际的 json 响应看起来像

POJO模型类

应用程序配置文件