Revision 5755
Added by ben leinfelder over 13 years ago
ReplicationServlet.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
package edu.ucsb.nceas.metacat.replication; |
28 | 28 |
|
29 |
import java.util.*; |
|
30 |
import java.io.*; |
|
29 |
import java.io.IOException; |
|
30 |
import java.io.OutputStream; |
|
31 |
import java.io.PrintWriter; |
|
32 |
import java.util.Enumeration; |
|
33 |
import java.util.Hashtable; |
|
31 | 34 |
|
32 |
import javax.servlet.*; |
|
33 |
import javax.servlet.http.*; |
|
35 |
import javax.servlet.ServletConfig; |
|
36 |
import javax.servlet.ServletException; |
|
37 |
import javax.servlet.http.HttpServlet; |
|
38 |
import javax.servlet.http.HttpServletRequest; |
|
39 |
import javax.servlet.http.HttpServletResponse; |
|
40 |
import javax.servlet.http.HttpSession; |
|
34 | 41 |
|
42 |
import org.apache.log4j.Logger; |
|
43 |
|
|
35 | 44 |
import edu.ucsb.nceas.metacat.service.ServiceService; |
36 | 45 |
import edu.ucsb.nceas.metacat.service.SessionService; |
37 | 46 |
import edu.ucsb.nceas.metacat.shared.MetacatUtilException; |
... | ... | |
39 | 48 |
import edu.ucsb.nceas.metacat.util.AuthUtil; |
40 | 49 |
import edu.ucsb.nceas.metacat.util.SessionData; |
41 | 50 |
|
42 |
import org.apache.log4j.Logger; |
|
43 |
|
|
44 | 51 |
public class ReplicationServlet extends HttpServlet { |
45 | 52 |
|
46 | 53 |
private static final long serialVersionUID = -2898600143193513155L; |
... | ... | |
85 | 92 |
|
86 | 93 |
private void handleGetOrPost(HttpServletRequest request, HttpServletResponse response) |
87 | 94 |
throws ServletException, IOException { |
88 |
PrintWriter out = response.getWriter();
|
|
95 |
PrintWriter out = null;
|
|
89 | 96 |
Hashtable<String, String[]> params = new Hashtable<String, String[]>(); |
90 | 97 |
Enumeration<String> paramlist = request.getParameterNames(); |
91 | 98 |
|
... | ... | |
167 | 174 |
} else if (action.equals("stop")) { |
168 | 175 |
// stop the replication server |
169 | 176 |
ReplicationService.getInstance().stopReplication(); |
177 |
out = response.getWriter(); |
|
170 | 178 |
out.println("Replication Handler Stopped"); |
171 | 179 |
} else if (action.equals("start")) { |
172 | 180 |
ReplicationService.getInstance().startReplication(params); |
181 |
out = response.getWriter(); |
|
173 | 182 |
out.println("Replication Handler Started"); |
174 | 183 |
} else if (action.equals("getall")) { |
175 | 184 |
ReplicationService.getInstance().runOnce(); |
176 | 185 |
response.setContentType("text/html"); |
186 |
out = response.getWriter(); |
|
177 | 187 |
out.println("<html><body>\"Get All\" Done</body></html>"); |
178 | 188 |
} else if (action.equals("forcereplicate")) { |
179 | 189 |
// read a specific docid from remote host, and store it into |
180 | 190 |
// local host |
181 |
ReplicationService.handleForceReplicateRequest(out, params, response,
|
|
191 |
ReplicationService.handleForceReplicateRequest(params, response, |
|
182 | 192 |
request); |
183 | 193 |
} else if (action.equals("forcereplicatedelete")) { |
184 | 194 |
// read a specific docid from remote host, and store it into |
185 | 195 |
// local host |
186 |
ReplicationService.handleForceReplicateDeleteRequest(out, params,
|
|
196 |
ReplicationService.handleForceReplicateDeleteRequest(params, |
|
187 | 197 |
response, request); |
188 | 198 |
} else if (action.equals("update")) { |
189 | 199 |
// request an update list from the server |
190 |
ReplicationService.handleUpdateRequest(out, params, response);
|
|
200 |
ReplicationService.handleUpdateRequest(params, response); |
|
191 | 201 |
} else if (action.equals("read")) { |
192 | 202 |
// request a specific document from the server |
193 | 203 |
// note that this could be replaced by a call to metacatServlet |
194 | 204 |
// handleGetDocumentAction(). |
195 |
ReplicationService.handleGetDocumentRequest(out, params, response);
|
|
205 |
ReplicationService.handleGetDocumentRequest(params, response); |
|
196 | 206 |
} else if (action.equals("getlock")) { |
197 |
ReplicationService.handleGetLockRequest(out, params, response);
|
|
207 |
ReplicationService.handleGetLockRequest(params, response); |
|
198 | 208 |
} else if (action.equals("getdocumentinfo")) { |
199 |
ReplicationService.handleGetDocumentInfoRequest(out, params, response);
|
|
209 |
ReplicationService.handleGetDocumentInfoRequest(params, response); |
|
200 | 210 |
} else if (action.equals("gettime")) { |
201 |
ReplicationService.handleGetTimeRequest(out, params, response);
|
|
211 |
ReplicationService.handleGetTimeRequest(params, response); |
|
202 | 212 |
} else if (action.equals("getcatalog")) { |
203 |
ReplicationService.handleGetCatalogRequest(out, params, response, true);
|
|
213 |
ReplicationService.handleGetCatalogRequest(params, response, true); |
|
204 | 214 |
} else if (action.equals("servercontrol")) { |
205 |
ReplicationService.handleServerControlRequest(out, params, response);
|
|
215 |
ReplicationService.handleServerControlRequest(params, response); |
|
206 | 216 |
} else if (action.equals("test")) { |
207 | 217 |
response.setContentType("text/html"); |
218 |
out = response.getWriter(); |
|
208 | 219 |
out.println("<html><body>Test successfully</body></html>"); |
209 | 220 |
} |
210 | 221 |
|
... | ... | |
216 | 227 |
logReplication.error("ReplicationServlet.handleGetOrPost - Metacat utility error in ReplicationServlet.handleGetOrPost: " |
217 | 228 |
+ mue.getMessage()); |
218 | 229 |
} finally { |
219 |
out.close(); |
|
230 |
if (out != null) { |
|
231 |
out.close(); |
|
232 |
} |
|
220 | 233 |
} |
221 | 234 |
} |
222 | 235 |
} |
Also available in: Unified diff
only call response.getWriter() when we are about to send text/xml to the client, otherwise we end of calling both getWriter() and getOutputStream() - resulting in an illegal state.