当前位置: 首页 > 知识库问答 >
问题:

构建时验证的Web套接字ClientEndpoint在Quarkus

邰博远
2023-03-14

我使用Java WebSocket API来声明客户机(由@ClientEndpoint注释的Java类):

@ClientEndpoint
public class MySock {
    MySock(ExecutorService exec){}
    ...
}

实例通过构造函数创建:

webSocket = new MySock(exec);
session = wsContainer.connectToServer(webSocket, url);

我有错误在构建通过夸克斯-马文-插件:

[error]: Build step ...ArcProcessor#validate threw an exception: 
javax.enterprise.inject.UnsatisfiedResolutionException:
Unsatisfied dependency for type ...ExecutorService and qualifiers [@Default]
- java member: edu.MySock#<init>()
- declared on CLASS bean [types=[edu.MySock, java.lang.Object], qualifiers=[@Default, @Any], target=edu.MySock]

注意:没有@Inject注释

如果它可以作为类和实例传递给#ConnectToServer,那么应该验证它吗?

那么,如果验证处理的是一个悲观的情况,验证是有用的,但它会打断一个乐观的情况,这可以吗?

悲观情况下,可能不会声明依赖关系:

session = wsContainer.connectToServer(MySock.class, url);

在以下情况下,验证是有害的,因为它会中断构建阶段:

session = wsContainer.connectToServer(webSocket, url);

也许ClientEndpoint根本不应该被验证?

在你问我之前。。。我们不打算向WebSocket中注入任何东西,也不想使用编程endpoint。但是我们想为注释类创建一个实例。为什么不呢?WebSocket本身包含复杂的逻辑,我们多次使用这种变体(例如在WildFly上的应用程序中)。

对我来说,最好的解决方案是只对我的bean禁用验证,但我找不到一个方法。

这篇文章对我没有帮助https://quarkus.io/guides/cdi-reference.事实是豆子。xml被忽略了,这也帮不了我。

未来的第二种方法是,如果没有一个类成员具有@Inject annotation,则禁用验证。这可能不正确,但这里有一些解释:

首先,容器调用bean构造函数(默认构造函数或带注释的@Inject构造函数),以获得bean的实例

所以,我的构造函数不是“默认”的,我也没有使用@Inject注释。

共有1个答案

太叔俊侠
2023-03-14

解决方法非常简单:@javax。企业注射被否决的注释将禁用bean进行验证。

 类似资料:
  • 问题内容: 我正在研究一款小型多人游戏。我想介绍身份验证。我正在使用Node.js和Socket.io。 当用户到达该主页时-无论他们是否登录,我都希望他们加入游戏-但他们将无法在其中进行任何操作(仅观看)。 然后我该如何在已经打开的套接字上对用户进行身份验证? 如果他们离开站点并回来,我还能保持身份验证吗?您可以通过网络套接字传递Cookie吗? 编辑 进一步我的问题。我可能想到的一种方法是提供

  • 问题内容: 如何验证socket.io连接?我的应用程序使用来自另一台服务器(python)的登录端点来获取令牌,每当用户在节点侧打开套接字连接时如何使用该令牌? 和客户端: 如果令牌是在python中创建的: 如何使用此令牌对节点中的套接字连接进行身份验证? 问题答案: 令牌是否在另一台服务器上创建都没有关系。如果您拥有正确的密钥和算法,您仍然可以验证它。 用模块实施 客户 服务器 用模块实施

  • 注意:关于我最终得出的结论,请参阅问题底部的更新。 我需要通过发送请求消息的web套接字对请求发送多个响应,第一个响应快速发送,其他响应在数据验证后发送(大约10到60秒后,来自多个并行线程)。 我很难获得稍后的响应来停止在所有打开的web套接字上广播。如何让它们只发送到初始web套接字?或者我应该使用Spring STOMP之外的东西(因为,老实说,我只想将消息路由到各种功能,我不需要或不想广播

  • 问题内容: 当在所有Web浏览器中使用Web套接字时,Ajax是否会过时? 如果我可以使用Web套接字实时获取数据并更新数据,为什么会需要ajax?即使我在应用程序启动时仅使用ajax来获取数据一次,我仍然可能想查看一段时间后该数据是否已更改。 Web套接字是否可以在跨域中使用或仅起源于同一域? 问题答案: WebSockets不会完全淘汰AJAX,而WebSockets可以跨域。 AJAX AJ

  • 在我的应用程序中,我需要向特定用户发送实时通知。我的类如下, 大多数情况下,信息将由服务器端发送。因此,我没有设置应用程序目标。 在客户端,我订阅目标“/主题/用户”, 在我的一个RestController中,我有一个方法可以将消息广播给所有连接的客户端。 在这部分之前,一切正常。我收到消息并正在登录控制台。 现在,如果我想只向特定用户发送通知,我必须使用。但是我不明白我应该传递给参数的内容。我

  • 问题内容: 使用flask式的微框架,我很难构建一个RequestParser可以验证嵌套资源的。假设期望的JSON资源格式为: 中的每个项目都对应一个对象: …然后使用如下形式创建一个: …但是你将如何验证其中MyObject每个字典的嵌套?或者,这是错误的方法吗? 与此对应的API MyObject本质上将每个对象视为对象文字,并且可能有一个或多个传递给服务;因此,在这种情况下,拼合资源格式将