java代码如下
import java.util.concurrent.TimeUnit; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint("/cmd/prog") public class Progress { @OnMessage public void onMessage(String msg, Session session) throws Exception { System.out.println("-------onMessage-------"); System.out.println("msg : " + msg); System.out.println(session.getQueryString()); for(int i=0;i<=100;i++) { String tmp = "让我们定义一个 Java EE websocket服务器端" + i; System.out.println("send msg : " + tmp); session.getBasicRemote().sendText(tmp); TimeUnit.SECONDS.sleep(1l); } } @OnOpen public void onOpen() { System.out.println("------------onOpen------------"); } @OnClose public void onClose() { System.out.println("------------onClose------------"); } }
maven配置的依赖是:
<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.1</version> </dependency>
<button onclick="start()">测试</button> <div id="messages"></div> <script type="text/javascript"> var webSocket = null; function init() { webSocket = new WebSocket('ws://127.0.0.1:8080/cmd/prog'); webSocket.onerror = function(event) { onError(event) }; webSocket.onopen = function(event) { onOpen(event) }; webSocket.onmessage = function(event) { onMessage(event) }; } function onMessage(event) { document.getElementById('messages').innerHTML += '<br />' + event.data; } function onOpen(event) { document.getElementById('messages').innerHTML = 'Connection established'; } function onError(event) { alert(event.data); } function start() { init(); } </script>
http://127.0.0.1:8080/index.jsp
点击按钮,报错:
WebSocket connection to 'ws://127.0.0.1:8080/cmd/prog' failed: Error during WebSocket handshake: Unexpected response code: 404
系统运行环境为:
jdk1.8 x64, tomcat7.0.57
网上貌似是说,要引入tomcat-socket的jar,但是这样做,肯定只能在tomcat下运行,不能在其他web server下运行
请问,怎么解决。
ServerEndpoint这些注解是JavaEE7的内容,记得Tomcat得要8.0才能支持。Tomcat7的话,WebSocket是靠Servlet继承WebSocketServlet来实现的
wenlogic要看版本,记得这些得12c我本地用的Tomcat7没什么问题,部署到Weblogic就404了真的好了谢谢大佬果然是这个问题,换成tomcat8就好了<divclass='ref'>
这个项目还做了其他xml配置吗,controller还用不用写其他方法
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。