Weblogic 12.1.3+websocket
来源:互联网 发布:日记本软件电脑版 编辑:程序博客网 时间:2024/05/29 09:39
万事开头难.工作需要研究websocket.公司之前都是用weblogic 11,所以搜索了weblogic+websocket的内容.找到了官方资料:
18 Using the WebSocket Protocol in WebLogic Server (还有一篇 17 Using WebSockets in WebLogic Server,这个应该是老版本.)
视频: youtube 教程: https://www.youtube.com/watch?v=BikL52HYaZg
资料:Jdon java EE 7教程
在旧项目中添加了一个POJO类,增加了@ServerEndpoint("/chatroomServerEndpoint")注释以及对应的@OnMessage等方法.
但是客户端 var ws = new WebSocket("ws://127.0.0.1:7001/echo");一直提示404错误.
经过长久的google,终于意识到了问题.将web.xml文件头
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">修改为
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1">
问题解决.
注:
web.xml中添加如下片段,解决连接关闭问题: 默认30秒.
<context-param><param-name>weblogic.websocket.tyrus.session-max-idle-timeout</param-name><param-value>0</param-value></context-param>附带吗:
@ServerEndpoint(value = "/chatroomServerEndpoint")public class EchoEndpoint {static Set<Session> all = Collections.synchronizedSet(new HashSet<Session>());@OnOpenpublic void onOpen(Session session) throws IOException {all.add(session);System.out.println("new session");session.getBasicRemote().sendText("onOpen is invoked.");}public void onClose(Session session) {all.remove(session);System.out.println("session closed");}@OnMessagepublic void echo(Session session, String message) throws IOException {String username = (String) session.getUserProperties().get("username");if (username == null) {session.getUserProperties().put("username", message);session.getBasicRemote().sendText(buildJsonData("System", "you are now connected as " + message));} else {Iterator<Session> iteartor = all.iterator();while (iteartor.hasNext()) {iteartor.next().getBasicRemote().sendText(buildJsonData(username, message));}}}private String buildJsonData(String username, String message) {// TODO Auto-generated method stubJsonObject jsonObject = Json.createObjectBuilder().add("message", username + ":" + message).build();StringWriter stringWriter = new StringWriter();try (JsonWriter jsonWriter = Json.createWriter(stringWriter)) {jsonWriter.write(jsonObject);}return stringWriter.toString();}@OnErrorpublic void onError(Throwable t) {t.printStackTrace();}}页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta charset="UTF-8"><script src="/websocket/static/js/jquery-1.8.1.min.js"type="text/javascript"></script><script>var ws = new WebSocket("ws://192.168.1.67:7001/chatroomServerEndpoint");//Right.ws.onopen = function() {console.log("open");};ws.onmessage = function(evt) {var d = JSON.parse(evt.data);if (d.message != null) {$("#a").val($("#a").val() + d.message + "\n")}};ws.onclose = function(evt) {console.log("WebSocketClosed!");};ws.onerror = function(evt) {console.log("WebSocketError!");};function send() {ws.send(m.value);};</script><body><textarea id="a" readonly="readonly" rows="10" cols="50"></textarea><br /><input type="text" id="m" size="50" /><input type="button" value="Send" onClick="send();" /></body></html>
运行结果见附图.
0 0
- Weblogic 12.1.3+websocket
- Weblogic 12.1.3集群管理手册(了解weblogic集群)
- weblogic(3)
- WebSocket(3)-- WebSocket协议简介
- WebSocket(3)-- WebSocket协议简介
- WebSocket(3)-- WebSocket协议简介
- WebSocket(3)-- WebSocket协议简介
- WebSocket(3)-- WebSocket协议简介
- Eclipse(Luna)上集成WebLogic(12.1.3)
- Weblogic 12.1.3集群管理手册(简介)
- websocket讲解3
- Websocket(3)--实时推送
- spring boot-3(WebSocket)
- WebSocket
- WebSocket
- WebSocket
- websocket
- WebSocket
- zxing适应各种分辨率
- LeetCode Search in Rotated Sorted Array
- C语言结构体中定义函数指针详解
- 生活中的观察者模式——一壶水的故事
- MyEclipse更改项目名,导致Spring加载两次
- Weblogic 12.1.3+websocket
- 删除文件等用trash命令
- Android版添加phonegap--sencha打包插件教程
- THINK PHP自动完成,填充时间的一个“坑”
- android屏幕适配建议 (一)
- 关于网上商城开发的随笔记录1
- Fragment动态添加控件(Button/Layout/...)
- mysql中有大量sleep进程的原因与解决办法
- java 报错 the type JOptionPane is not accessible due to restriction on required library ×