Revision 574
Added by berkley over 23 years ago
MetacatReplication.java | ||
---|---|---|
21 | 21 |
import java.text.*; |
22 | 22 |
import javax.servlet.*; |
23 | 23 |
import javax.servlet.http.*; |
24 |
import oracle.xml.parser.v2.*; |
|
24 |
|
|
25 | 25 |
import org.xml.sax.*; |
26 | 26 |
|
27 | 27 |
public class MetacatReplication extends HttpServlet implements Runnable |
... | ... | |
73 | 73 |
HttpServletResponse response) |
74 | 74 |
throws ServletException, IOException |
75 | 75 |
{ |
76 |
System.out.println("in metacatreplication"); |
|
77 | 76 |
PrintWriter out = response.getWriter(); |
78 | 77 |
Hashtable params = new Hashtable(); |
79 | 78 |
Enumeration paramlist = request.getParameterNames(); |
... | ... | |
121 | 120 |
} |
122 | 121 |
else if(((String[])params.get("action"))[0].equals("forcereplicate")) |
123 | 122 |
{ |
124 |
String server = ((String[])params.get("server"))[0]; |
|
125 |
int serverCheckCode = 0; |
|
126 |
try |
|
127 |
{ |
|
128 |
serverCheckCode = MetacatReplication.getServerCode(server); |
|
129 |
} |
|
130 |
catch(Exception e) |
|
131 |
{ |
|
132 |
System.out.println("error in metacatReplication.handleUpdateRequest"+ |
|
133 |
": could not get server code"); |
|
134 |
} |
|
135 |
replicationDaemon.schedule(new ReplicationHandler(out, serverCheckCode), |
|
136 |
2000); |
|
123 |
handleForceReplicateRequest(out, params, response); |
|
137 | 124 |
} |
138 | 125 |
else if(((String[])params.get("action"))[0].equals("update")) |
139 | 126 |
{ //request an update list from the server |
... | ... | |
170 | 157 |
} |
171 | 158 |
} |
172 | 159 |
|
160 |
private void handleForceReplicateRequest(PrintWriter out, Hashtable params, |
|
161 |
HttpServletResponse response) |
|
162 |
{ |
|
163 |
System.out.println("in handleforcereplicaterequest"); |
|
164 |
String server = ((String[])params.get("server"))[0]; |
|
165 |
String docid = ((String[])params.get("docid"))[0]; |
|
166 |
try |
|
167 |
{ |
|
168 |
int serverCheckCode = MetacatReplication.getServerCode(server); |
|
169 |
URL u = new URL("http://" + server + "?action=read&docid=" + docid); |
|
170 |
System.out.println("sending message: " + u.toString()); |
|
171 |
String xmldoc = MetacatReplication.getURLContent(u); |
|
172 |
URL docinfourl = new URL("http://" + server + |
|
173 |
"?action=getdocumentinfo&docid=" + |
|
174 |
docid); |
|
175 |
System.out.println("sending message: " + docinfourl.toString()); |
|
176 |
String docInfoStr = MetacatReplication.getURLContent(docinfourl); |
|
177 |
DocInfoHandler dih = new DocInfoHandler(); |
|
178 |
XMLReader docinfoParser = ReplicationHandler.initParser(dih); |
|
179 |
docinfoParser.parse(new InputSource(new StringReader(docInfoStr))); |
|
180 |
Hashtable docinfoHash = dih.getDocInfo(); |
|
181 |
String user = (String)docinfoHash.get("user_owner"); |
|
182 |
String group = new String(user); |
|
183 |
Connection conn = util.openDBConnection(); |
|
184 |
DocumentImpl.write(conn, new StringReader(xmldoc), "UPDATE", docid, user, |
|
185 |
group, 1); |
|
186 |
conn.close(); |
|
187 |
} |
|
188 |
catch(Exception e) |
|
189 |
{ |
|
190 |
System.out.println("error in metacatReplication.handleForceReplicate" + |
|
191 |
"Request: " + e.getMessage()); |
|
192 |
} |
|
193 |
} |
|
194 |
|
|
173 | 195 |
/** |
174 | 196 |
* Grants or denies a lock to a requesting host. |
175 | 197 |
* The servlet parameters of interrest are: |
... | ... | |
180 | 202 |
private void handleGetLockRequest(PrintWriter out, Hashtable params, |
181 | 203 |
HttpServletResponse response) |
182 | 204 |
{ |
205 |
System.out.println("in handlegetlockrequest"); |
|
183 | 206 |
java.util.Date remoteDate = new java.util.Date(); |
184 | 207 |
java.util.Date localDate = new java.util.Date(); |
185 | 208 |
try |
Also available in: Unified diff
replication on insert functionality is now working.