Project

General

Profile

« Previous | Next » 

Revision 5755

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.

View differences:

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