问题标签 [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.
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 迁移实施的任何其他可能的解决方案吗?
- 尝试检查 mvn 依赖关系:树并从 axis2-transport-local jar 中删除了 jsr311-api jar,但仍然得到方法未找到错误 [3]
尝试注释掉“/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>
spring-mvc - 在 Spring + Jersey 应用程序中拦截请求和响应
我有 Spring Boot 应用程序,它同时具有 Jersey 端点和 Spring mvc 端点。我想为两种类型的 enpoint 拦截来自单个点的请求和响应。
到目前为止,我知道有三种选择可以做到这一点。那些是Filter
-Spring Interceptor
和Spring @ControllerAdvice
。其中Interceptor
,ControllerAdvice
仅适用于 Spring 端点,不适用于 Jersey 端点。Filter
到目前为止,只有这两个端点都有效。有没有其他方法可以拦截 Jersey 和 Spring mvc 的请求/响应?
提前致谢。
java - 泽西工厂尝试两次创建 @Context 变量
我对Jersey 2.26和Spring Boot 2有疑问。
我添加了一个工厂来将@Context
变量注入方法,但它做了两次,第一次是在方法之前,然后是在方法之后:
我有一个创建这些用户的工厂:
在球衣配置中,我注册了这个工厂:
它以前运行良好,但在我将应用程序升级到 jersey 2.26 和 spring boot 2 后,它停止工作并抛出异常:
出现异常是因为 UserFactory 被调用了两次。首先在调用 getUserEntitlements 之前调用它,以注入用户。但是在方法返回之后,它会再次被调用(这次它得到一个不允许某些操作的 HttpRequest 实现)。
为什么它可以被调用两次?好像我会要求它增强请求和响应。
jsp - Jsp 没有在 Spring Boot 应用程序中由 Jersey 编译
我正在尝试使用 Jersey 设置 Spring Boot 应用程序。Rest API 工作正常,但视图(jsp)在浏览器上呈现为纯文本。一旦我包含它,我尝试在我的依赖项中包含 jstl;服务器开始返回空白响应。
请让我知道我在这里缺少什么。
代码结构:
下面是我的代码:
JerseyConfig.java
HelloController.java
HelloJSPController
SpringJerseyApplication.java
应用程序属性
索引.jsp
编辑:
pom.xml
如果我取消注释 tomcat-embed-jasper,我的应用程序不会出现。它抛出以下异常:
java - @Autowired 给出空指针异常
我已经完成了@Autowired 注释,并且@Component 注释正在调用和调用类。尽管如此,我在“ServiceResource.java”-> serviceValidator 值中得到空指针异常为空。
请帮助我知道我哪里出错了?
服务资源.java
服务验证器.java
服务管理器.java
Web.xml
应用上下文
pom.xml
java - 泽西岛 没有为 SingleJust 找到序列化程序
我正在尝试Single.just(..)
从我的端点返回一个。我使用 jersey 和 rx-jersey 创建了它。我在浏览器上不断收到此消息:
这是我的代码:-
泽西配置:
我的终点
用户:-
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,请评论
java - 测试中未找到带有 Jersey 的 Spring Boot 中的处理程序方法
当应用程序启动并从测试中访问时,Spring Boot / Jersey 找不到处理程序方法。如果我单独启动应用程序并使用http://localhost:8080/demo
浏览器访问一切都很好。
日志说:“没有找到 [/demo] 的处理程序方法”。相关的日志输出:
该应用程序包含以下类(用 Kotlin 编写):
资源
JerseyConfig
应用程序:
失败的测试:
如果我使用 Jersey 客户端进行测试,我会得到同样的错误:
构建.gradle:
测试代码本身似乎没问题,因为当我将测试方法的主体替换为Thread.sleep(...)
然后从浏览器访问服务器时,我得到了同样的错误(404,由于“没有找到 [/demo] 的处理程序方法” )。
为什么在测试中找不到处理程序方法?我必须改变什么?
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 的方法。
json - json rootelement 在 JSON 响应中显示 ArrayList 而不是 @JsonRootName("TestClass") 作为根元素
我正在研究 maven SpringBoot 微服务应用程序,我希望 json 字符串带有我已经提到的根元素,但它给了我带有 ArrayList 作为根元素的 json 字符串。
报告了很多类似的问题,但没有一个解决方案对我有用。
预期是
实际的 json 响应看起来像
POJO模型类
应用程序配置文件