gpt4 book ai didi

java - 在 Struts 2 中使用 WebSocket API

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:04 29 4
gpt4 key购买 nike

我有一个在 Tomcat 7.0.43 上运行的 Struts2 Web 应用程序,它使用 Rest 和 Convention 插件来映射所有请求。 Struts 尝试自己映射所有请求。

JSR 356 使用如下注释定义服务器端点

@ServerEndpoint(value = "/websocket/chat")

现在,当浏览器尝试连接到 ws:/127.0.0.1:8080/websocket/chat 时,请求失败,因为 Struts 映射器拦截了请求。

是否有任何我可以在 XML 文件中指定的内容,以便请求到达正确的位置?

编辑:

按照提示,我添加了

<constant name="struts.action.excludePattern" value="/websocket.*?" />

到我的 Struts 配置,之后 URL/websocket/chat 开始出现 404 错误。

后来才知道需要配置一个ServerApplicationConfig的实现。这样做之后,websocket 开始正常工作,但我的应用程序的其余部分无法加载并出现错误:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

这是我的类(class):

public class Socket implements ServerApplicationConfig {

@Override
public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> scanned) {

Set<ServerEndpointConfig> result = new HashSet<ServerEndpointConfig>();

return result;
}

@Override
public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {

Set<Class<?>> results = new HashSet<Class<?>>();
for (Class<?> clazz : scanned) {
results.add(clazz);
}
return results;
}
}

我怎样才能让所有东西在 Harmony 中协同工作?

注意:我正在使用 Struts Spring 插件进行 Spring Security 的依赖注入(inject)。

最佳答案

您可以配置 Struts 过滤器以通过正则表达式模式排除某些 URL。您应该在 struts.xml

中添加常量
<constant name="struts.action.excludePattern" value="^ws://.+$"/>

使用Websocket API用于服务器端点。

关于java - 在 Struts 2 中使用 WebSocket API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20774716/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com