问题标签 [undertowjaxrsserver]
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.
resteasy - 在 UndertowJaxrsServer 中提供静态内容
我正在尝试通过ResourceHandler
具有 RestEasy 部署的 Undertow 服务器中的 a 提供静态内容。
使用上面的代码,只有 resteasy 部署工作,我得到一个 404 的静态内容(index.html)。
任何指针?谢谢!
java - Wildfly-swarm:无法访问 jax-rs 资源(404 未找到)
我想尝试一下wildfly-swarm。我用 Jax-rs 分数和一个简单的 hello world 资源创建了一个项目。我运行了它,但我得到了 404 Not Found。
这是我的 pom.xml
这是我的 Jax-rs 资源
如您所见,它非常简单。也许我错过了一些东西。我没有添加 @ApplicationPath 注释类,因为根据文档(https://wildfly-swarm.gitbooks.io/wildfly-swarm-users-guide/content/common/jax-rs.html),这部分加了一个默认。我从 GitHub ( https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/jaxrs/jaxrs ) 上的示例中得到的另一件事是:
由于 WildFly Swarm 应用程序倾向于支持每个可执行文件部署一个,因此如果 jboss-web.xml 尚不存在,它会自动将其添加到部署中。这用于将部署绑定到 Web 服务器的根目录,而不是使用 .war 自己的名称作为应用程序上下文。
所以这就是为什么我试图从http://localhost:8080/app/greet访问我的资源
javafx - 从库启动的线程更新 JavaFX 控件
我有一个 JavaFX 8 应用程序。它使用一种观察者模式来对事件做出反应:
到目前为止,它对我的所有用例都运行良好:
- 与按钮的交互
Platform.runLater()
来自外部控制器的事件,我通过启动线程观察- 等等
现在我想启动嵌入式 Undertow HTTP 服务器并在其中部署一个 JAX-RS 端点。每当有请求进入时,我想使用上述事件总线从该端点内触发一个事件。所以,这就是我启动 Undertow 并部署我的 JAX-RS 应用程序的方式:
事情是new UndertowJaxrsServer().start()
异步调用,它自己启动一个线程。然后当MyEndpoint
处理一个请求并尝试触发一个事件时,它发生在由 Undertow 启动的那个线程中。
所以在事件监听器中,如果我尝试对 UI 进行任何更新,我会得到:
最后,我的问题是有没有办法明确告诉 JavaFX 在 UI 线程中运行一段代码,即使调用堆栈来自另一个(我无法控制并且我不能这样做Platform.runLater()
) .
谢谢!
java - 使用通配符的 Undertow 路由格式
我的要求是提供“index.html”,而不管请求中设置了什么路由。我已经为 undertow 引用了路由模板格式,但无济于事。它似乎对人们有用。处理程序看起来像
并且正在添加处理程序,例如
我也尝试过使用 PathResourceManager。那是行不通的。处理程序能够完美匹配没有通配符的路径。只有带有通配符的情况似乎会失败。
对此的任何帮助将不胜感激。
azure-storage - 用户使用rest api上传的文件在哪里以及如何存储?
目前我正在使用共享存储(天蓝色文件存储)来存储个人资料图片和公司徽标以及管理员上传的一些自定义 python 脚本。我的休息服务在一个 docker swarm 集群中运行,所有节点都可以访问共享位置。这种设计有什么缺点吗?我目前正在将文件保存到该位置并为该文件创建一个 url,并使用我的 nginx 反向代理/负载均衡器将其作为静态资源提供。所以我很想知道这个设计是否有任何缺点,我怎样才能让它变得更好?
jax-rs - JAXRS 相同路径不同的有效负载问题
我面临 PUT/POST 请求的 JAXrs 映射问题。在我的用例中,我有相同的路径 URI 和不同的有效负载。一个负载有一个简单的 JSON 对象,另一个有一个相同对象的 JSON 数组。我应该怎么做?
但是,如果有效负载有另一个对象,在我的例子中是 JSON 数组,它会引发错误。
java - 使用 Undertow 的 JAX-RS 集成测试在 Jenkins 中失败但在本地工作
我有一个在 IntelliJ(使用 Gradle 运行测试)和 Gradle 命令行中本地工作的 JAX-RS 集成测试。
但是当我在 Jenkins 中运行测试时,测试失败了,在 Undertow 部署期间出现了一些问题。
这就是我启动容器的方式:
当测试在 Jenkins 中运行时,我得到一个 NullPointerException :
java.lang.RuntimeException: java.lang.NullPointerException at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:254) at org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer.deploy(UndertowJaxrsServer.java :266)
...
原因:org.jboss.weld.servlet.api.helpers.ForwardingServletListener.contextInitialized(ForwardingServletListener.contextInitialized(WeldInitialListener.java:94) 的 java.lang.NullPointerException java:34) 在 org.jboss.weld.environment.servlet.Listener.contextInitialized(Listener.java:121) 在 io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187) 在 io.undertow.servlet .core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:217) at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:186) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction. java:42) 在 io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) 在 io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:252)
查看 Weld 源代码(在weld-web-3.1.2.Final 中),似乎从这里的最后一行抛出了异常:
虽然部分测试正在运行,但我可以看到这些日志:
[2021-10-06T08:44:16.016Z] [io.undertow.Undertow] [测试工作者] [117] [INFO] 启动服务器:Undertow - 2.1.3.Final
[2021-10-06T08:44:16.016Z] [org.xnio.Xnio] [测试工作者] [95] [INFO] XNIO 版本 3.8.0.Final
[2021-10-06T08:44:16.016Z] [org.xnio.nio.NioXnio] [测试工作者] [59] [INFO] XNIO NIO 实施版本 3.8.0.Final
[2021-10-06T08:44:16.016Z] [org.jboss.threads.Version] [Test worker] [52] [INFO] JBoss Threads 版本 3.1.0.Final
[2021-10-06T08:44:17.017Z] [org.jboss.weld.environment.servlet.Listener] [Test worker] [115] [INFO] WELD-ENV-001007:使用 ServletContextListener 初始化 Weld
[2021-10-06T08:44:17.017Z] [org.jboss.weld.bootstrap.WeldStartup] [测试工人] [231] [INFO] WELD-000101:事务服务不可用。@Inject UserTransaction 的注入不可用。事务性观察者将被同步调用。
[2021-10-06T08:44:17.017Z] [org.jboss.weld.event.ExtensionObserverMethodImpl] [测试工作者] [86] [INFO] WELD-000411:观察者方法 [BackedAnnotatedMethod] 保护 org.apache.deltaspike.core .impl.exclude.extension.ExcludeExtension.vetoBeans(@Observes ProcessAnnotatedType, BeanManager) 接收所有带注释类型的事件。考虑使用 @WithAnnotations 或带边界的泛型类型来限制事件。
[2021-10-06T08:44:17.017Z] [org.jboss.weld.event.ExtensionObserverMethodImpl] [测试工作者] [86] [INFO] WELD-000411:观察者方法 [BackedAnnotatedMethod] public org.apache.deltaspike.core .impl.interceptor.interdyn.InterDynExtension.processAnnotatedType(@Observes ProcessAnnotatedType) 接收所有带注释类型的事件。考虑使用 @WithAnnotations 或带边界的泛型类型来限制事件。
[2021-10-06T08:44:17.017Z] [org.jboss.weld.event.ExtensionObserverMethodImpl] [测试工作者] [86] [INFO] WELD-000411:观察者方法 [BackedAnnotatedMethod] 保护 org.apache.deltaspike.core .impl.message.MessageBundleExtension.detectInterfaces(@Observes ProcessAnnotatedType) 接收所有带注释类型的事件。考虑使用 @WithAnnotations 或带边界的泛型类型来限制事件。
[2021-10-06T08:44:17.017Z] [org.jboss.weld.event.ExtensionObserverMethodImpl] [测试工作者] [86] [INFO] WELD-000411:观察者方法 [BackedAnnotatedMethod] 保护 org.apache.deltaspike.core .impl.interceptor.GlobalInterceptorExtension.promoteInterceptors(@Observes ProcessAnnotatedType) 接收所有带注释类型的事件。考虑使用 @WithAnnotations 或带边界的泛型类型来限制事件。
[2021-10-06T08:44:17.017Z] [org.jboss.weld.event.ExtensionObserverMethodImpl] [测试工作者] [86] [INFO] WELD-000411:观察者方法 [BackedAnnotatedMethod] public org.apache.deltaspike.core .impl.config.ConfigurationExtension.findDynamicConfigurationBeans(@Observes ProcessAnnotatedType<?>) 接收所有带注释类型的事件。考虑使用 @WithAnnotations 或带边界的泛型类型来限制事件。
[2021-10-06T08:44:18.018Z] [org.jboss.weld.logging.ValidatorLogger] [测试工人] [59] [警告] WELD-001478:拦截器类 org.apache.deltaspike.core.impl.throttling .ThrottledInterceptor 已为应用程序和 bean 归档 /tankkarte-service_/var/jenkins_home/.gradle/caches/modules-2/files-2.1/org.apache.deltaspike.core/deltaspike-core-impl/1.9 启用。 4/709e0b27bb80e52fcd6a886a216ca3f9c2b8c28/deltaspike-core-impl-1.9.4.jar。它只会在链的@Priority 部分中调用。
[2021-10-06T08:44:18.018Z] [org.jboss.weld.logging.ValidatorLogger] [测试工人] [59] [警告] WELD-001478:拦截器类 org.apache.deltaspike.core.impl.lock .LockedInterceptor 已为应用程序和 bean 归档 /tankkarte-service_/var/jenkins_home/.gradle/caches/modules-2/files-2.1/org.apache.deltaspike.core/deltaspike-core-impl/1.9 启用。 4/709e0b27bb80e52fcd6a886a216ca3f9c2b8c28/deltaspike-core-impl-1.9.4.jar。它只会在链的@Priority 部分中调用。
[2021-10-06T08:44:18.018Z] [org.jboss.weld.logging.ValidatorLogger] [测试工人] [59] [警告] WELD-001478:拦截器类 org.apache.deltaspike.core.impl.future .FutureableInterceptor 已为应用程序和 bean 存档 /tankkarte-service_/var/jenkins_home/.gradle/caches/modules-2/files-2.1/org.apache.deltaspike.core/deltaspike-core-impl/1.9 启用。 4/709e0b27bb80e52fcd6a886a216ca3f9c2b8c28/deltaspike-core-impl-1.9.4.jar。它只会在链的@Priority 部分中调用。
[2021-10-06T08:44:18.018Z] [org.jboss.weld.logging.ValidatorLogger] [测试工人] [59] [警告] WELD-001478:拦截器类 org.apache.deltaspike.core.impl.monitoring .InvocationMonitorInterceptor 已为应用程序和 bean 归档 /tankkarte-service_/var/jenkins_home/.gradle/caches/modules-2/files-2.1/org.apache.deltaspike.core/deltaspike-core-impl/1.9 启用。 4/709e0b27bb80e52fcd6a886a216ca3f9c2b8c28/deltaspike-core-impl-1.9.4.jar。它只会在链的@Priority 部分中调用。
[2021-10-06T08:44:18.018Z] [org.jboss.weld.environment.undertow.UndertowContainer] [测试工人] [39] [INFO] WELD-ENV-001302:检测到 Undertow,CDI 注入将在Servlet、过滤器和监听器。
[2021-10-06T08:44:19.019Z] [org.jboss.weld.bootstrap.Validator] [weld-worker-1] [200] [WARN] WELD-001473:javax.enterprise.inject.spi.Bean 实现liquibase.integration.cdi.CDIBootstrap$1@7c73f99b 声明了一个正常范围,但没有实现 javax.enterprise.inject.spi.PassivationCapable。不可能将此 bean 注入具有钝化范围(@SessionScoped、@ConversationScoped)的 bean。这可以通过实现 PassivationCapable 接口为 Bean 实现分配唯一 id 来解决。
[2021-10-06T08:44:20.020Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [信息] 引导 Liquibase 3.6.2 [2021-10-06T08:44:20.020Z] [liquibase .logging.core.Slf4jLogger] [测试工作者] [42] [INFO]从 PUBLIC.DATABASECHANGELOGLOCK [2021-10-06T08:44:20.020Z] [liquibase.logging.core.Slf4jLogger] [测试工作者]中选择 COUNT() [42] [INFO]从 PUBLIC.DATABASECHANGELOGLOCK 中选择 COUNT()
[2021-10-06T08:44:20.020Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [信息] 从 PUBLIC.DATABASECHANGELOGLOCK 中选择锁定,其中 ID = 1
[2021-10-06T08:44:20.020Z] [liquibase.logging.core.Slf4jLogger] [Test worker] [42] [INFO] 成功获取更改日志锁
[2021-10-06T08:44:21.021Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [INFO] 从 PUBLIC.DATABASECHANGELOG 中选择 MD5SUM,其中 MD5SUM 不为空
[2021-10-06T08:44:21.021Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [信息] 从 PUBLIC.DATABASECHANGELOG 中选择计数(*)
[2021-10-06T08:44:21.021Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [INFO] 从 PUBLIC.DATABASECHANGELOG 读取
[2021-10-06T08:44:21.021Z] [liquibase.logging.core.Slf4jLogger] [测试工作者] [42] [INFO] 从 PUBLIC.DATABASECHANGELOG 中选择 * 按日期执行 ASC,ORDEREXECUTED ASC
[2021-10-06T08:44:21.021Z] [liquibase.logging.core.Slf4jLogger] [Test worker] [42] [INFO] 成功释放更改日志锁
[2021-10-06T08:44:21.021Z] [io.undertow.Undertow] [测试工作者] [252] [INFO] 停止服务器:Undertow - 2.1.3.Final
但在某些时候,抛出异常..
知道我可以检查什么以了解为什么这只在我的 Jenkins 环境中失败?
我正在使用 org.jboss.resteasy 3.12.1.Final 库。