1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket;
20
21 import java.io.IOException;
22 import javax.servlet.ServletException;
23 import javax.servlet.http.HttpServlet;
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import org.eclipse.jetty.util.log.Log;
28 import org.eclipse.jetty.util.log.Logger;
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 @SuppressWarnings("serial")
53 public abstract class WebSocketServlet extends HttpServlet implements WebSocketFactory.Acceptor
54 {
55 private final Logger LOG = Log.getLogger(getClass());
56 private WebSocketFactory _webSocketFactory;
57
58
59
60
61
62 @Override
63 public void init() throws ServletException
64 {
65 try
66 {
67 String bs = getInitParameter("bufferSize");
68 _webSocketFactory = new WebSocketFactory(this, bs == null ? 8192 : Integer.parseInt(bs));
69 _webSocketFactory.start();
70
71 String max = getInitParameter("maxIdleTime");
72 if (max != null)
73 _webSocketFactory.setMaxIdleTime(Integer.parseInt(max));
74
75 max = getInitParameter("maxTextMessageSize");
76 if (max != null)
77 _webSocketFactory.setMaxTextMessageSize(Integer.parseInt(max));
78
79 max = getInitParameter("maxBinaryMessageSize");
80 if (max != null)
81 _webSocketFactory.setMaxBinaryMessageSize(Integer.parseInt(max));
82
83 String min = getInitParameter("minVersion");
84 if (min != null)
85 _webSocketFactory.setMinVersion(Integer.parseInt(min));
86 }
87 catch (ServletException x)
88 {
89 throw x;
90 }
91 catch (Exception x)
92 {
93 throw new ServletException(x);
94 }
95 }
96
97
98
99
100
101 @Override
102 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
103 {
104 if (_webSocketFactory.acceptWebSocket(request, response) || response.isCommitted())
105 return;
106 super.service(request, response);
107 }
108
109
110 public boolean checkOrigin(HttpServletRequest request, String origin)
111 {
112 return true;
113 }
114
115
116 @Override
117 public void destroy()
118 {
119 try
120 {
121 _webSocketFactory.stop();
122 }
123 catch (Exception x)
124 {
125 LOG.ignore(x);
126 }
127 }
128 }