Tomcat7 Websocket聊天示例:如何加载Websocket服务器?
我正在尝试使用websockets创建我自己的聊天客户端,我想我应该从这个开始。我已经用Eclipse成功地编译和部署了Tomcat7 Websocket聊天示例:如何加载Websocket服务器?,websocket,tomcat7,Websocket,Tomcat7,我正在尝试使用websockets创建我自己的聊天客户端,我想我应该从这个开始。我已经用Eclipse成功地编译和部署了chatnotation类,但是当我将chat.html文件重定向到我认为端点应该是的位置时,什么也没有发生 ,它们有一个@ServerEndpoint(value=“/websocket/chat”)注释,我不确定需要做什么(即在web.xml中)才能在服务器启动时加载该类并绑定该端点 我在构造函数中放置了断点,以查看它是否在部署时创建,而不是。您不需要web.xml中的任何
chatnotation
类,但是当我将chat.html文件重定向到我认为端点应该是的位置时,什么也没有发生
,它们有一个@ServerEndpoint(value=“/websocket/chat”)
注释,我不确定需要做什么(即在web.xml中)才能在服务器启动时加载该类并绑定该端点
我在构造函数中放置了断点,以查看它是否在部署时创建,而不是。您不需要web.xml中的任何特殊配置。您是否在本地的Tomcat的正确版本上运行它?此注释仅适用于Tomcat 7.0.47。另外,如果您使用的是Maven,那么这就是我使用的依赖项—它指定了websocket api,以便代码可以编译,但假设运行时环境将提供必要的库。您将在tomcat-7.0.47/lib中找到websocket-api.jar和tomcat7-websocket.jar
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
javax.websocket
javax.websocket-api
1
假如
这里是“小魔术”:
必须在类路径中实现接口:
应用程序可以提供此接口的实现,以过滤已部署的已发现WebSocket端点。此类的实现将通过ServletContainerInitializer扫描发现
如果使用Tomcat示例,则类存在于{CATALINA_BASE}\webapps\examples\WEB-INF\classes\websocket\ExamplesConfig.java
(随compiled.class一起提供)
最后但并非最不重要的一点:随着Tomcat的发现,您不必在
WEB-INF/WEB.xml
中注册任何servlet。此文件必须存在,但内容最少。我认为这不是真的。正如您所引用的,“应用程序可能会提供此接口的实现,以过滤已部署的已发现WebSocket端点。”听起来您不必拥有它,事实上,当我部署相同的示例时,没有它也可以正常工作。