问题标签 [jersey-3.0]
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.
tomcat - javax.servlet.ServletException:类 [org.glassfish.jersey.servlet.ServletContainer] 不是 Servlet
您可能会觉得这是一个重复的问题,但没有一个具有相同标题的问题能解决我的问题。我正在使用 Jersey 3.0 在 Eclipse 中创建一个 RESTful Web 服务,我使用 Tomcat 9.0 作为我的服务器。
java - 使用 Jersey 3 和 Tomcat 10 的 Hello World 问题/404
尝试使用 IntelliJ 作为 IDE 使用 Jersey 和 Tomcat 10 做一个 Hello World。不幸的是,我会得到一个 404 - 似乎 servlet 没有加载。看了几个教程,找不到原因。此外,我在 web.xml 中收到一条奇怪的错误消息...
pom.xml
web.xml(xml 文件是强制性的,我不能使用 ApplicationConfig 类)
另外,在这里我servlet-class
在线收到此错误消息:'org.glassfish.jersey.servlet.ServletContainer' is not assignable to 'javax.servlet.Servlet,jakarta.servlet.Servlet'
我只发现了https://youtrack.jetbrains.com/issue/IDEA-86833问题,但似乎已解决。
控制器/端点
这应该部署 servlet 并通过具有以下 url 的 GET 请求使其可访问:http://localhost:8080/app/api/hello - 但得到一个 404 代替...
我在这里做错了什么?代码看起来不错,我在服务器日志中看不到任何内容。
感谢您的任何投入!
java - 带有资源注释的 JNDI 查找始终为 NULL
我有一个使用 Jersey3 的 Tomcat 10、Java11 的 WebApp。我在我的数据库中定义了一个 ConnectionPoolcontext.xml
来处理与我的 OracleDB 的连接,现在我正试图通过@Resource
注释访问我的控制器中的数据源。这应该调用 JNDI 查找。不幸的是,我总是得到一个 NPE,因为它似乎在运行时找不到资源......我做错了什么?或者正确的映射名称/查找是什么?
根据教程,当我直接在 context.xml 中定义资源时,引用链接是可选的。
感谢您的任何意见!
java - Jersey 3 - 使用 bindFactory 配置绑定
使用 Jersey 3.0.1,我正在努力让绑定工作。
我有这个带有以下工厂的绑定模块:
然后我使用嵌入式 Jetty 为我的 Servlet 设置:
在我的 Rest 服务中,我只是尝试注入一个私有实例变量:
但是,此 dslContext 始终为空。我可以从日志中看到它打印了LOG.info("Configured binder");
消息。然而,在我的工厂类中放置类似的日志表明它们永远不会被调用。
有谁知道我错过了什么?
编辑
为了让事情更简单,我创建了这个类:
更改了我的活页夹模块:
然后尝试只注入 SimpleClass:
但它仍然为空,尽管我看到了两条日志消息。我必须缺少一些基本设置。
完整的 SimpleClass 示例代码在:
github.com/sodonnel/jerseyBind
java - Jersey 3.0.1 - 无法从 FormDataBodyPart 获取 MediaType
我已将我在 gradle 中的项目依赖项从 compile("org.glassfish.jersey.media:jersey-media-multipart:2.3.2") 更新为 compile("org.glassfish.jersey.media:jersey-media-multipart:3.0 .1")
我收到以下错误,试图检查代码以查看是否会指向从 FormDataBodyPart 获取 MediaType 的方向,但无法弄清楚,我应该在哪里获得 Jersey 3 中的 Mediatype?
build.gradle 依赖:
TIA
java - 使用 Jersey 测试框架测试 Jersey 3 Web 应用程序的问题
我有一个 Jersey 3 Web 应用程序(在 Tomcat10、JDK15 和 JUnit5 上运行),我想在其中对我的端点进行单元测试。
虽然,我在设置这些时遇到了麻烦。我的理解是,我需要使用 GrizzlyWebTestContainer 才能获得正确的环境设置。另外,我认为我需要以某种方式将我的 web.xml 传递给 ServletcContainer。但是我该怎么做呢?
当我运行测试时,我得到:
所以我还需要在某个地方配置一个 baseUri - 但是在哪里?不幸的是,我只找到了 Grizzly Test ContainerFactory 而不是 GrizzlyWebTestC 的示例和文档......有人可以解释一下我错过了什么吗?
非常感谢任何输入!
这是我的单元测试:
这是我的端点,我想测试:
这是我的 pom.xml 中最重要的部分
java - Jersey 3 Multipart-Feature 未找到注入源
尝试为我的 Jersey 3 Web 应用程序使用 Multipart-Feature。不幸的是,似乎没有找到注入源......
pom.xml
web.xml
端点
我一直在查看其他帖子,我认为我有正确的依赖关系,并且我还在我的 web.xml 中注册了 Multipart-Feature。我错过了什么?
感谢您的任何投入!
java - 使用 Jersey 3.0.1 在 Java 中运行简单的 RESTful Web 服务时,显示 HTTP 状态 404 错误
我正在尝试使用球衣,并试图在服务器 Apache Tomcat v9 上的 Spring Tools Suite(Java jdk11)上构建一个简单的球衣 API。这是一个 maven 项目,jersey API 版本是 3.0.1。我正在观察链接的 HTTP 状态 404:HTTP 状态 404 未找到 [HTTP 状态 404 未找到图像][2]。我已经提到了一些关于堆栈溢出的链接,它们有类似的问题,但我无法在它们之后解决我的问题。
我的资源类
网页xml
pom xml
索引jsp
tomcat - 如何在 web、xml 中正确定义 log4j2 配置
尝试在我的 Jersey3 应用程序(在 tomcat 中运行)中使用 log4j2。我想通过我的 web.xml 加载配置,如下所示:
web.xml
配置文件本身,位于以下结构中:
src/main/resources/config/
在我的属性中,我定义了一个文件记录器:
log4j-dev.properties
pom.xml
我得到的只是错误级别的控制台日志(似乎加载了默认配置而不是我的)。我确定,我正确定义了配置,尽管在 web.xml 中犯了一个错误...我需要如何定义路径才能正确加载属性?
log4j 的调试日志
java - Jersey Bean 验证:无法初始化“jakarta.el.ExpressionFactory”
我已经使用 Jersey 实现了一个 REST 服务,并且想使用 Bean Validation。当我为 Jersey (jersey-bean-validation) 添加 bean 验证 maven 依赖项时,webapp 由于错误而在启动时中断:
我四处搜索,发现较旧的解决方案提到包括缺少依赖项,例如这个问题:
javax.validation.ValidationException:HV000183:无法加载“javax.el.ExpressionFactory”
但在我的情况下,依赖项已经过时了。此外,在查看依赖关系树时:
我可以在最底部看到 el-api 和 el 库已经作为 jersey-bean-validation 库的传递依赖项包含在内。
我在 ResourceBundleMessageInterpolator 中放置了一个断点以找出原因,当 ExpressionFactory 实例化时,会引发异常:
我不知道那是从哪里来的。我至少可以使用以下方法按预期创建一个 ExpressionFactory:
我创建了一个非常简单的示例项目,它使用与我在项目中使用的 maven 相同的 Jersey+Jetty 设置:https ://www.dropbox.com/s/dcvief9dlqk648m/valtest.zip?dl=0
它可以运行并且mvn jetty:run
它应该在 http://localhost:8080/test 上显示一条消息。
我错过了什么?