2013-03-23 65 views
4

我试图让我自己的聊天客户端使用websockets,并认为我会开始与Tomcat 7 websocket chat example code.。我用Eclipse成功编译并部署了ChatAnnotation类,但是当我将chat.html文件重定向到我认为的端点应该是的时候,没有任何反应。Tomcat7 Websocket聊天示例:如何加载Websocket服务器?

In the sample class,他们有一个@ServerEndpoint(value = "/websocket/chat")注释,我不知道我需要做什么(即在web.xml中)来获取该类在服务器上加载并启动该端点。

我已经在构造函数中放置断点,以查看它是否在部署时得到创建,而不是。

回答

0

在web.xml中不需要任何特殊的配置。你在本地运行在正确版本的Tomcat上吗?此注释仅适用于Tomcat 7.0.47。另外,如果你使用的是Maven,这是我使用的依赖关系 - 它指定了websocket-api,以便代码可以编译,但是假定必需的lib将由运行时环境提供。你会发现的WebSocket-api.jar文件中& tomcat7-websocket.jar的tomcat-7.0.47/lib目录

<dependency> 
     <groupId>javax.websocket</groupId> 
     <artifactId>javax.websocket-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
4

这里是 “小魔术”:

必须具有的实现在classpath接口ServerApplicationConfig

应用程序可以提供这种接口的实现,以过滤部署在发现的WebSocket端点。通过ServletContainerInitializer扫描将发现此类的实现

如果使用Tomcat的样品,一类{CATALINA_BASE}\webapps\examples\WEB-INF\classes\websocket\ExamplesConfig.java存在(自带编译后的.class)


最后但并非最不重要的:比如Tomcat 发现的的东西,你不必须在您的WEB-INF/web.xml中注册任何servlet。这个文件必须存在,但只需要很少的东西。

+0

我不认为这是真的。就像你引用的一样,“应用程序*可能*提供了这个接口的实现来过滤发现的WebSocket端点。”这听起来并不像你必须拥有它,事实上,当我部署了相同的示例时,没有它,它工作得很好。 – eis 2018-02-27 07:29:47