1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket.servlet;
20
21 import java.io.IOException;
22 import java.util.Iterator;
23 import java.util.ServiceLoader;
24
25 import javax.servlet.ServletContext;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.eclipse.jetty.websocket.api.WebSocketPolicy;
30 import org.eclipse.jetty.websocket.api.annotations.WebSocket;
31 import org.eclipse.jetty.websocket.api.extensions.ExtensionFactory;
32
33
34
35
36 public interface WebSocketServletFactory
37 {
38 public static class Loader
39 {
40 private static WebSocketServletFactory INSTANCE;
41
42 public static WebSocketServletFactory create(WebSocketPolicy policy) throws ClassNotFoundException, InstantiationException, IllegalAccessException
43 {
44 return load().createFactory(policy);
45 }
46
47 public static WebSocketServletFactory load() throws ClassNotFoundException, InstantiationException, IllegalAccessException
48 {
49 if (INSTANCE != null)
50 {
51 return INSTANCE;
52 }
53 WebSocketServletFactory baseFactory;
54 Iterator<WebSocketServletFactory> factories = ServiceLoader.load(WebSocketServletFactory.class).iterator();
55
56 if (factories.hasNext())
57 {
58 baseFactory = factories.next();
59 }
60 else
61 {
62
63 ClassLoader loader = Thread.currentThread().getContextClassLoader();
64 @SuppressWarnings("unchecked")
65 Class<WebSocketServletFactory> wssf = (Class<WebSocketServletFactory>)loader
66 .loadClass("org.eclipse.jetty.websocket.server.WebSocketServerFactory");
67 baseFactory = wssf.newInstance();
68 }
69
70 INSTANCE = baseFactory;
71 return INSTANCE;
72 }
73 }
74
75 public boolean acceptWebSocket(HttpServletRequest request, HttpServletResponse response) throws IOException;
76
77 public boolean acceptWebSocket(WebSocketCreator creator, HttpServletRequest request, HttpServletResponse response) throws IOException;
78
79 public void cleanup();
80
81 public WebSocketServletFactory createFactory(WebSocketPolicy policy);
82
83 public abstract WebSocketCreator getCreator();
84
85 public abstract ExtensionFactory getExtensionFactory();
86
87
88
89
90
91
92
93
94 public WebSocketPolicy getPolicy();
95
96 public void init(ServletContext servletContext) throws Exception;
97
98 public boolean isUpgradeRequest(HttpServletRequest request, HttpServletResponse response);
99
100
101
102
103
104
105
106
107
108 public void register(Class<?> websocketPojo);
109
110 public abstract void setCreator(WebSocketCreator creator);
111 }