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