gpt4 book ai didi

tomcat - 无法连接到部署在 Tomcat 中的 ServerEndpoint

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:33 27 4
gpt4 key购买 nike

很多人认为我使用 IDE,所以现在让我声明一下:我不使用任何 IDE。


我获取了以下 Java 源代码,将其编译为 Echo.class,然后通过编写 jar -cvf Echo.war Echo 创建了 Echo.war。 Windows CMD 中的 class,并将文件上传到 $TOMCAT_HOME/webapps 文件夹中:

@ServerEndpoint("/echo")
public class Echo {

@OnMessage
public String echo(String incomingMessage) {
return "I recieved ('" + incomingMessage + "'), so I am returning it.";
}
}

启动Tomcat后,突然有如下文件夹结构:

<webapps>
...
<Echo.war>
<Echo>
<Echo.class>
<META-INF>
<MANIFEST.MF>
</META-INF>
</Echo>
</webapps>

当尝试使用 new WebSocket("ws://example.com:8080/Echo/echo") 通过 JavaScript 打开到我的端点的 websocket 连接时,我收到 404 响应而不是101 次握手。

如果有任何帮助,这里是经理展示的图片:enter image description here

(Tomcat 8 更新):

我按照 this guide 更新到 Tomcat 8现在 catalina.out 不再是空的,经理现在显示: enter image description here

以下是 catalina.out 的内容,内容太多,无法包含在本文中:http://pastebin.com/cwLviH5b

Echo.war650651690691< 行中提到.


我做了一些研究,发现如果您使用 Java 8 构建类,但您的 Tomcat 在 Java 7 上运行,您将得到一个 UnsupportedClassVersionError。我没有收到那个错误,但我想我也可以在我的服务器上更新到 Java 8。我这样做并重新部署了 WAR,但没有任何改变。

我还将注释从 @ServerEndpoint("/echo") 更改为 @ServerEndpoint("/dest") 以防出现名称冲突,但是这也没有帮助。


这是来自 the book I am reading 的引述:

Deploying your EchoServer WebSocket endpoint is particularly simple. You need to compile the source file, include the class file in the WAR file, and deploy the WAR file. The web container will detect that there is a WebSocket endpoint included in the WAR file and do the necessary setup to deploy it. Once you have completed these steps, you are ready to make your first call to the WebSocket endpoint.

我认为我必须创建一个包含单个类文件的 WAR 文件,但也许情况并非如此,因为他说的是 “WAR 文件” 而不是 ”一个 WAR 文件”

并根据this Wikipedia article ,WAR 文件必须 包含一个 web.xml 文件(有人可能想知道他为什么没有提到这一点)。是真的吗?这就是它不起作用的原因吗?如果是,web.xml 应该包含什么?当然,它不仅仅是一个名为“web.xml”的空文件。

最佳答案

创建以下文件结构

WEB-INF
|
- classes
|
- Echo.class

然后通过 jar -cvf echo.war *WEB-INF 的父文件夹中创建您的 war 文件。将这个 war 文件部署到 tomcat 并尝试使用 web-socket 连接。

关于tomcat - 无法连接到部署在 Tomcat 中的 ServerEndpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38543908/

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