|
From: <ian...@us...> - 2007-10-01 21:55:46
|
Revision: 463
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=463&view=rev
Author: iansmith
Date: 2007-10-01 14:55:49 -0700 (Mon, 01 Oct 2007)
Log Message:
-----------
This commit adds support for running the separate parts of the og system on different machines. Developers should see no visible changes if they add this to their server.xml in tomcat's conf directory:
<Environment name="isSimServer" value="true" type="java.lang.String"/>
<Environment name="isMediaServer" value="true" type="java.lang.String"/>
<Environment name="isWebappServer" value="true" type="java.lang.String"/>
These properties control the obvious servlets. These servlets will return 404 if they are "turned off" via this mechanism.
Modified Paths:
--------------
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractRemoteServlet.java
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIAuthenticator.java
maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClientWire.java
maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
maven/trunk/ogoglio-integration-test/src/test/resources/basic-config.properties
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
Added Paths:
-----------
maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/Four04SiteResource.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java
maven/trunk/ogoglio-server/src/main/webapp/WEB-INF/web-all.xml
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractRemoteServlet.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractRemoteServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractRemoteServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -18,7 +18,6 @@
import com.ogoglio.client.WebAPIClientWire;
import com.ogoglio.client.WebAPIDescriptor;
import com.ogoglio.util.ArgumentUtils;
-import com.ogoglio.util.Log;
import com.ogoglio.xml.AuthDocument;
public abstract class AbstractRemoteServlet extends MigratedResourceServlet {
Modified: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/AbstractResourceServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -65,7 +65,7 @@
protected Context initCtx=null;
protected String baseUrl=null;
- private void initContext() throws NamingException {
+ protected void initContext() throws NamingException {
if (initCtx==null) {
initCtx = new InitialContext();
}
@@ -224,6 +224,9 @@
outputStream.flush();
outputStream.close();
}
+ if (connection.getResponseCode()!=200) {
+ Log.warn("Proxy sending error to client: "+connection.getResponseCode()+" on "+uri);
+ }
response.setStatus(connection.getResponseCode());
Map headers = connection.getHeaderFields();
Added: maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/Four04SiteResource.java
===================================================================
--- maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/Four04SiteResource.java (rev 0)
+++ maven/trunk/ogoglio-appdev/src/main/java/com/ogoglio/appdev/servlet/Four04SiteResource.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -0,0 +1,17 @@
+package com.ogoglio.appdev.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class Four04SiteResource extends SiteResource {
+
+ public Four04SiteResource(String name) {
+ super(name);
+ }
+ public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
+ response.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIAuthenticator.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIAuthenticator.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIAuthenticator.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -33,6 +33,7 @@
ArgumentUtils.assertNotEmpty(password);
String body = WebConstants.AUTH_USERNAME_PARAM + "=" + username + "&" + WebConstants.AUTH_PASS_PARAM + "=" + password;
authCookie = wire.getAuthCookieViaPost(serviceDescriptor.getAuthURI(), body, "application/x-www-form-urlencoded");
+ //authCookie = wire.getAuthCookieViaPost(serviceDescriptor.getAuthURI(), body, "text/plain");
if(authCookie == null) {
throw new IOException("Did not get a valid cookie for " + username);
}
Modified: maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClientWire.java
===================================================================
--- maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClientWire.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-common/src/main/java/com/ogoglio/client/WebAPIClientWire.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -104,7 +104,8 @@
}
if ("POST".equals(method)) {
connection.setDoOutput(true);
- connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
+ //connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
+ connection.setRequestProperty("Content-type", "text/plain");
connection.setRequestProperty("Content-length", Integer.toString(body.length()));
OutputStream rawOutStream = connection.getOutputStream();
PrintWriter pw = new PrintWriter(rawOutStream);
Modified: maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-integration-test/src/test/java/com/ogoglio/client/test/ClientTest.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -18,8 +18,10 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException;
+import java.net.URLConnection;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
@@ -81,7 +83,7 @@
URI linkURI1 = null;
- URI serviceURI1 = null;
+ URI serviceURI1 = null, mediaURI, simURI;
WebAPIClientWire wire1 = null;
@@ -94,6 +96,8 @@
fail("couldn't load property set (BASIC)");
}
serviceURI1 = new URI(ps.getKeyFromSet(PropStorage.BASIC_PROPS, "ogoglio.baseUrl"));
+ mediaURI = new URI(ps.getKeyFromSet(PropStorage.BASIC_PROPS, "ogoglio.mediaUrl"));
+ simURI = new URI(ps.getKeyFromSet(PropStorage.BASIC_PROPS, "ogoglio.baseSimUrl"));
linkURI1 = new URI("http://example.com/");
wire1 = new WebAPIClientWire();
descriptor1 = new WebAPIDescriptor(serviceURI1);
@@ -106,6 +110,29 @@
public void tearDown() {
}
+ public void testServersOnAmazon() throws AuthenticationFailedException, IOException {
+ //only run these when we are on the cluster
+ if (serviceURI1.getHost().endsWith("transmutable.com")) {
+ checkCantReachURI(simURI);
+ checkCantReachURI(mediaURI);
+ try {
+ new Socket(serviceURI1.getHost(),3306/*mysql port*/);
+ fail("Shouldn't be able to connect to the MySql server!");
+ } catch (IOException e) {
+ //pass
+ }
+ }
+ }
+
+ private void checkCantReachURI(URI uri) {
+ try {
+ uri.toURL().openConnection();
+ fail("should not be able to see the URI"+uri+"!");
+ } catch (IOException e) {
+ //pass
+ }
+ }
+
public void testAppletsCanBeDownloaded() throws IOException, URISyntaxException {
checkSupportFile("ogoglio-viewer-applet.jar");
checkSupportFile("ogoglio-test-applet.jar");
@@ -210,6 +237,7 @@
WebAPIAuthenticator advancedAuth = new WebAPIAuthenticator(wire1, descriptor1, USERNAME1, PASSWORD1);
WebAPIClient advancedClient = new WebAPIClient(descriptor1, advancedAuth, wire1);
SpaceDocument spaceDocument = advancedClient.createSpace("Susan's Space");
+ assertNotNull(spaceDocument);
checkSpaceDocumentCreateTime(spaceDocument);
assertNotNull(spaceDocument);
@@ -258,7 +286,10 @@
checkGeometryAvailableForSpace(advancedClient, thingDocs, spaceClient1.getSpace());
guestSpaceClient1 = checkGuestCookieOperation(spaceDocument.getSpaceID(), advancedClient, WebConstants.GUEST_COOKIE_PREFIX + "Test_Suite_Guest");
+
checkDeletingSpaceDestroysThings(spaceDocument.getSpaceID(), advancedClient, USERNAME1);
+
+
} finally {
if (spaceClient1 != null) {
spaceClient1.cleanup();
Modified: maven/trunk/ogoglio-integration-test/src/test/resources/basic-config.properties
===================================================================
--- maven/trunk/ogoglio-integration-test/src/test/resources/basic-config.properties 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-integration-test/src/test/resources/basic-config.properties 2007-10-01 21:55:49 UTC (rev 463)
@@ -2,4 +2,5 @@
ogoglio.testSpaceNumber = ${ogoglio.testSpaceNumber}
ogoglio.baseUrl = ${ogoglio.baseURL}
ogoglio.baseSimUrl = ${ogoglio.baseSimURL}
+ogoglio.mediaUrl = ${ogoglio.mediaURL}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/media/site/MediaServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -13,6 +13,7 @@
import javax.servlet.http.HttpServletResponse;
import com.ogoglio.appdev.servlet.AbstractResourceServlet;
+import com.ogoglio.appdev.servlet.Four04SiteResource;
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.DecoratedInputStream;
import com.ogoglio.media.FileStore;
@@ -23,28 +24,38 @@
private FileStore fileStore = null;
+ private boolean servletNeeded = true;
+
public void init(ServletConfig config) throws ServletException {
- super.init(config);
- Context envCtx;
- try {
- envCtx = (Context) initCtx.lookup("java:comp/env");
- File mediaDirectory = null;
- try {
- mediaDirectory = new File((String)envCtx.lookup("ogoglio/mediaDirectory"));
- } catch (NamingException e) {
- }
+ Context envCtx;
+ try {
+ initContext();
+ envCtx = (Context) initCtx.lookup("java:comp/env");
+ String useMe = (String) envCtx.lookup("ogoglio/isMediaServer");
+ if ("false".equals(useMe.toLowerCase())) {
+ servletNeeded = false;
+ }
- if (mediaDirectory == null) {
- Log.warn("Not running media service");
- } else {
- fileStore = new FileStore(mediaDirectory.toURI());
- }
- } catch (NamingException e) {
- Log.error("Unable to figure out the initial context due to Naming Exception",e);
- throw new ServletException(e);
- }
+ //has to come AFTER the useMe/servletNeeded above
+ super.init(config);
+ File mediaDirectory = null;
+ try {
+ mediaDirectory = new File((String) envCtx.lookup("ogoglio/mediaDirectory"));
+ } catch (NamingException e) {
+ }
+
+ if (mediaDirectory == null) {
+ Log.warn("Not running media service");
+ } else {
+ fileStore = new FileStore(mediaDirectory.toURI());
+ }
+ } catch (NamingException e) {
+ Log.error("Unable to figure out the initial context due to Naming Exception", e);
+ throw new ServletException(e);
+ }
+
}
public void destroy() {
@@ -52,7 +63,12 @@
}
public SiteResource createBaseResource(ServletConfig servletConfig) {
- return new MediaResource();
+ if (servletNeeded) {
+ return new MediaResource();
+ } else {
+ Log.info("Turning off media servlet, this host doesn't want it.");
+ return new Four04SiteResource("media");
+ }
}
private class MediaResource extends SiteResource {
@@ -62,26 +78,27 @@
}
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- if ((request.getQueryString()!=null) && (request.getQueryString().startsWith("list"))) {
- doList(request,response);
- return;
- }
+ if ((request.getQueryString() != null) && (request.getQueryString().startsWith("list"))) {
+ doList(request, response);
+ return;
+ }
sendStringResponse("I'm a media servlet (" + (fileStore == null ? "inactive" : "active") + ")", "text/plain", response);
}
+
public void doList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (fileStore == null) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
- OutputStream str=response.getOutputStream();
- OutputStreamWriter wr=new OutputStreamWriter(str);
- String[] allNames= fileStore.getAllNames();
- for (int i=0; i<allNames.length;++i) {
- wr.write(allNames[i]+"\n");
+ OutputStream str = response.getOutputStream();
+ OutputStreamWriter wr = new OutputStreamWriter(str);
+ String[] allNames = fileStore.getAllNames();
+ for (int i = 0; i < allNames.length; ++i) {
+ wr.write(allNames[i] + "\n");
}
wr.flush();
wr.close();
- response.setContentType("text/plain");
+ response.setContentType("text/plain");
response.setStatus(HttpServletResponse.SC_OK);
}
}
@@ -107,7 +124,7 @@
if (input.getLength() > -1) {
response.setContentLength((int) input.getLength());
}
- if(input.getMimeType() != null) {
+ if (input.getMimeType() != null) {
response.setContentType(input.getMimeType());
}
StreamUtils.write(input, response.getOutputStream());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/ServiceInitializationPersistTasks.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -14,12 +14,10 @@
package com.ogoglio.persist;
import java.io.IOException;
-import java.net.URI;
import org.hibernate.SessionFactory;
import com.ogoglio.appdev.persist.PersistException;
-import com.ogoglio.client.WebAPIUtil;
public class ServiceInitializationPersistTasks {
@@ -29,34 +27,6 @@
public static final String DEFAULT_DOOR_DISPLAY_NAME = "Default Door";
- public static void DEAD_CODE_initializeLocalSim(URI serviceURI, SessionFactory sessionFactory) throws PersistException {
- SimRecord[] simRecords = SimPersistTasks.findSims(sessionFactory);
- URI ourURI=WebAPIUtil.appendToURI(serviceURI, "sim/");
-
- if (simRecords.length != 0) {
- //the db might have been created on another host (e.g. the amazon case)
- for (int i=0; i<simRecords.length;++i) {
- SimRecord sim=simRecords[i];
- if (LOCAL_SIM_DISPLAY_NAME.equals(sim.getDisplayName())) {
- if (!(ourURI.equals(sim.getSimURI()))) {
- //make it point to us
- sim.setSimURI(ourURI);
- //sim.setActive(true);
- SimPersistTasks.update(sim, sessionFactory);
- } else {
- if (!sim.isActive()) {
- //sim.setActive(true);
- SimPersistTasks.update(sim, sessionFactory);
- }
- }
- }
- }
- SimRecord rec = SimPersistTasks.findSimsBySimURI(ourURI, sessionFactory);
- return;
- }
- SimPersistTasks.createSim(LOCAL_SIM_DISPLAY_NAME, WebAPIUtil.appendToURI(serviceURI, "sim/"), SimRecord.DEFAULT_EVENT_PORT, true, sessionFactory);
- }
-
public static void initializeBootstrapAccount(SessionFactory sessionFactory,String host,String user, String pw, String cookie) throws PersistException, IOException {
AccountRecord accountRec = AccountPersistTasks.findAccountByUsername(user, sessionFactory);
if (accountRec != null) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpacePersistTasks.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -13,6 +13,11 @@
limitations under the License. */
package com.ogoglio.persist;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URI;
import java.util.Date;
import java.util.Random;
@@ -22,6 +27,7 @@
import com.ogoglio.appdev.persist.HibernateTask;
import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.util.Log;
import com.ogoglio.xml.PossessionDocument;
import com.ogoglio.xml.SpaceDocument;
import com.ogoglio.xml.SpaceMemberDocument;
@@ -34,6 +40,10 @@
public static final Random RANDOM = new Random();
+ private static final long TEST_SIM_INTERVAL_MS = 15000;
+
+ private static long lastTestOfSimServers=0L;
+
public static SpaceRecord updateSpace(final long spaceID, final SpaceDocument spaceDocument, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
@@ -71,7 +81,7 @@
}
if (dirty) {
- record=updateRecordAndUpdateModifiedTime(record,hibernateSession,true);
+ record = updateRecordAndUpdateModifiedTime(record, hibernateSession, true);
}
return record;
}
@@ -79,7 +89,16 @@
task.setSessionFactory(sessionFactory);
return (SpaceRecord) task.execute();
}
-
+
+ private static SpaceRecord updateRecordAndUpdateModifiedTime(final SpaceRecord record, SessionFactory sessionFactory, final boolean useUpdate) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ return updateRecordAndUpdateModifiedTime(record, hibernateSession, useUpdate);
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (SpaceRecord) task.execute();
+ }
private static SpaceRecord updateRecordAndUpdateModifiedTime(SpaceRecord record, Session hibernateSession, boolean useUpdate) {
record.setLastModifiedTime(new Date().getTime());
if (useUpdate) {
@@ -128,7 +147,7 @@
public static void update(final SpaceRecord record, final SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
- updateRecordAndUpdateModifiedTime(record, hibernateSession,true);
+ updateRecordAndUpdateModifiedTime(record, hibernateSession, true);
return null;
}
};
@@ -136,9 +155,118 @@
task.execute();
}
+ private static SimRecord findSimIfActive(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
+ SimRecord simRecord = null;
+ if (spaceRecord.getSimID() != -1) {
+ Query simQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIM_BY_ID);
+ simQuery.setLong("simID", spaceRecord.getSimID());
+ simRecord = (SimRecord) simQuery.uniqueResult();
+ if (simRecord == null || simRecord.isActive() == false) {
+ spaceRecord.setSimID(-1);
+ updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
+ simRecord = null;
+ return null;
+ } else {
+ return simRecord;
+ }
+ } else {
+ return null;
+ }
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (SimRecord) task.execute();
+ }
+
+ private static void markInactive(SimRecord record, SessionFactory sessionFactory) throws PersistException {
+ record.setActive(false);
+ SimPersistTasks.update(record, sessionFactory);
+ }
public static SimRecord findOrAssignSim(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ return findOrAssignSim(spaceRecord, sessionFactory, true);
+ }
+
+ public static void verifyActiveSims(SimRecord[] purportedActive, SessionFactory sessionFactory) throws PersistException {
+ //let's see if they are ok
+ for (int i=0; i<purportedActive.length;++i) {
+ try {
+ URI simURI=purportedActive[i].getSimURI();
+ HttpURLConnection connection = (HttpURLConnection) simURI.toURL().openConnection();
+ connection.setRequestMethod("GET");
+ connection.setAllowUserInteraction(false);
+ if (connection.getResponseCode()!=200) {
+ Log.warn("Can't get a connection to "+simURI+"! Marking inactive!");
+ markInactive(purportedActive[i], sessionFactory);
+ } else {
+ Log.info("Verified connection to "+simURI);
+ }
+ } catch (MalformedURLException e) {
+ Log.warn("Can't understand the URI "+purportedActive[i].getSimURI()+"! Marking inactive!");
+ markInactive(purportedActive[i], sessionFactory);
+ } catch (ProtocolException e) {
+ Log.warn("Can't understand the URI protocol "+purportedActive[i].getSimURI()+"! Marking inactive!");
+ markInactive(purportedActive[i], sessionFactory);
+ } catch (IOException e) {
+ Log.warn("Can't connect to "+purportedActive[i].getSimURI()+"! Marking inactive! IOException:"+e.getMessage());
+ markInactive(purportedActive[i], sessionFactory);
+ }
+ }
+
+ }
+ public static SimRecord findOrAssignSim(final SpaceRecord spaceRecord, SessionFactory sessionFactory, boolean use_network) throws PersistException {
+ SimRecord rec = findSimIfActive(spaceRecord, sessionFactory);
+ SimRecord[] active;
+
+ if (rec!=null) {
+ //assume that if we have a sim ID already assigned we are ok
+ return rec;
+ }
+ active=findAllActiveSims(spaceRecord, sessionFactory);
+ if (active.length==0) {
+ throw new PersistException("Unable to find any active sims!");
+ }
+ //has it been a while?
+ long now=System.currentTimeMillis();
+ if ((now-lastTestOfSimServers<TEST_SIM_INTERVAL_MS) || (!use_network)) {
+ return pickSimRandomly(spaceRecord, sessionFactory, active);
+ }
+ //update the time check
+ lastTestOfSimServers=now;
+
+ verifyActiveSims(active,sessionFactory);
+
+ active=findAllActiveSims(spaceRecord, sessionFactory);
+ if (active.length==0) {
+ throw new PersistException("Unable to find any active sims (after doing a check)!");
+ }
+ return pickSimRandomly(spaceRecord, sessionFactory, active);
+ }
+
+ private static SimRecord pickSimRandomly(final SpaceRecord spaceRecord, SessionFactory sessionFactory, SimRecord[] active) throws PersistException {
+ SimRecord rec;
+ //pick randomly among actives
+ rec = (SimRecord) active[Math.abs(RANDOM.nextInt() % active.length)];
+ spaceRecord.setSimID(rec.getSimID());
+ updateRecordAndUpdateModifiedTime(spaceRecord, sessionFactory, true);
+ return rec;
+ }
+
+ private static SimRecord[] findAllActiveSims(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
+ Query simsQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIMS_BY_ACTIVE);
+ simsQuery.setBoolean("active", true);
+ return (SimRecord[]) simsQuery.list().toArray(new SimRecord[0]);
+ }
+ };
+ task.setSessionFactory(sessionFactory);
+ return (SimRecord[]) task.execute();
+ }
+ public static SimRecord findOrAssignSim_OLD_VERSION(final SpaceRecord spaceRecord, SessionFactory sessionFactory) throws PersistException {
+ HibernateTask task = new HibernateTask() {
+ public Object run(Session hibernateSession) {
SimRecord simRecord = null;
if (spaceRecord.getSimID() != -1) {
Query simQuery = hibernateSession.getNamedQuery(SimPersistTasks.SIM_BY_ID);
@@ -146,7 +274,7 @@
simRecord = (SimRecord) simQuery.uniqueResult();
if (simRecord == null || simRecord.isActive() == false) {
spaceRecord.setSimID(-1);
- updateRecordAndUpdateModifiedTime(spaceRecord,hibernateSession,true);
+ updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
simRecord = null;
} else {
return simRecord;
@@ -162,7 +290,7 @@
//TODO pick a sim based on load, not at random
simRecord = (SimRecord) sims[Math.abs(RANDOM.nextInt() % sims.length)];
spaceRecord.setSimID(simRecord.getSimID());
- updateRecordAndUpdateModifiedTime(spaceRecord,hibernateSession,true);
+ updateRecordAndUpdateModifiedTime(spaceRecord, hibernateSession, true);
return simRecord;
}
};
@@ -180,7 +308,7 @@
return null;
}
SpaceRecord record = new SpaceRecord(displayName, ownerUsername);
- record=updateRecordAndUpdateModifiedTime(record, hibernateSession, false);
+ record = updateRecordAndUpdateModifiedTime(record, hibernateSession, false);
return record;
}
};
@@ -265,7 +393,7 @@
if (account == null) { //happens for guests, who can never write
return false;
}
- if(account.isFrozen()){ //tsk tsk
+ if (account.isFrozen()) { //tsk tsk
return false;
}
@@ -292,7 +420,7 @@
for (int i = 0; i < members.length; i++) {
if (account.getUsername().equals(members[i].getMemberUsername())) {
- if(members[i].getRole() == SpaceMemberDocument.BUILDER_ROLE || members[i].getRole() == SpaceMemberDocument.EDITOR_ROLE){
+ if (members[i].getRole() == SpaceMemberDocument.BUILDER_ROLE || members[i].getRole() == SpaceMemberDocument.EDITOR_ROLE) {
return Boolean.TRUE;
}
return Boolean.FALSE;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -31,6 +31,7 @@
import nanoxml.XMLElement;
import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.appdev.servlet.Four04SiteResource;
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.DecoratedInputStream;
import com.ogoglio.media.MediaService;
@@ -71,29 +72,42 @@
private String localIP = null;
+ private boolean servletNeeded = true;
+
public void init(ServletConfig config) throws ServletException {
- super.init(config);
- System.out.println("REALLY IN INIT:"+config.getServletName()+","+config.getServletContext().getServletContextName());
try {
+ initContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
- simURI = new URI((String) envCtx.lookup("ogoglio/baseSimURL"));
+ String useMe = (String) envCtx.lookup("ogoglio/isSimServer");
+ if ("false".equals(useMe.toLowerCase())) {
+ servletNeeded = false;
+ }
- SimRecord simRecord = SimPersistTasks.findSimsBySimURI(simURI, getSessionFactory());
- if (simRecord != null) {
- //error
- Log.warn("Restarting the sim server @ "+simRecord.getSimURI()+" but it was already in the database! Ignored.");
- } else {
- Log.info("Starting up sim @ " +simURI);
- simRecord = SimPersistTasks.createSim(ServiceInitializationPersistTasks.LOCAL_SIM_DISPLAY_NAME, simURI, SimRecord.DEFAULT_EVENT_PORT, true, getSessionFactory());
+ //this has to come AFTER the servletNeeded is initialized
+ super.init(config);
+
+ //don't bother with the sim if nobody wants it
+ if (servletNeeded) {
+ simURI = new URI((String) envCtx.lookup("ogoglio/baseSimURL"));
+ SimRecord simRecord = SimPersistTasks.findSimsBySimURI(simURI, getSessionFactory());
+ if (simRecord != null) {
+ //error
+ Log.warn("Marking sim server active @ " + simRecord.getSimURI() + " [it was already in the database]! Ignored.");
+ simRecord.setActive(true);
+ SimPersistTasks.update(simRecord, getSessionFactory());
+ } else {
+ Log.info("Starting up sim @ " + simURI);
+ simRecord = SimPersistTasks.createSim(ServiceInitializationPersistTasks.LOCAL_SIM_DISPLAY_NAME, simURI, SimRecord.DEFAULT_EVENT_PORT, true, getSessionFactory());
+ }
sim = new Sim(simRecord, getMediaService(), getSessionFactory());
localIP = InetAddress.getByName(simURI.getHost()).getHostAddress();
}
} catch (NamingException e) {
- throw new ServletException("Couldn't find the baseSimURL:"+e.getMessage(),e);
+ throw new ServletException("Couldn't find the baseSimURL:" + e.getMessage(), e);
} catch (Exception e) {
- throw new ServletException("Couldn't start sim servlet:"+e.getMessage(),e);
- }
+ throw new ServletException("Couldn't start sim servlet:" + e.getMessage(), e);
+ }
ScriptContextFactory.setTimedContextAsGlobalContext();
}
@@ -102,16 +116,15 @@
try {
super.destroy();
sim.cleanup();
- SimRecord rec=SimPersistTasks.findSimsBySimURI(simURI, getSessionFactory());
- if (rec==null) {
- System.out.println("FART: CAN'T FIND SIM REC!");
+ SimRecord rec = SimPersistTasks.findSimsBySimURI(simURI, getSessionFactory());
+ if (rec == null) {
+ Log.warn("Destroy: Can't find URI in database during shutdown of sim! URI=" + simURI);
} else {
- System.out.println("FART: DESTROYING SIM REC!");
+ Log.info("Destroy: Removing " + simURI + " from database list of sims.");
SimPersistTasks.delete(rec, getSessionFactory());
}
- Log.info("Cleaned up sim record in database:"+simURI);
} catch (PersistException e) {
- Log.error("Can't clean up Sim record in database:"+e.getMessage(),e);
+ Log.error("Can't clean up Sim record in database:" + e.getMessage(), e);
}
}
@@ -131,7 +144,12 @@
}
public SiteResource createBaseResource(ServletConfig servletConfig) {
- return new SimResource();
+ if (servletNeeded) {
+ return new SimResource();
+ } else {
+ Log.info("Turning off sim servlet, this host doesn't want it.");
+ return new Four04SiteResource("sim");
+ }
}
private class SimResource extends SiteResource {
@@ -251,10 +269,9 @@
public void doGet(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
long spaceID = Long.parseLong(pathElements[2]);
try {
-
+
SpaceRecord spaceRecord = SpacePersistTasks.findSpaceBySpaceID(spaceID, getSessionFactory());
if (spaceRecord == null) {
- System.out.println("FART: no space!");
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
@@ -265,7 +282,6 @@
return;
}
- System.out.println("FART: authed:"+authedAccount.getUsername());
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
Map settings = simulator.getSettings();
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AccountServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -29,6 +29,7 @@
import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.appdev.servlet.DescendingSiteResource;
+import com.ogoglio.appdev.servlet.Four04SiteResource;
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.WebAPIClientWire;
import com.ogoglio.client.WebAPIUtil;
@@ -65,7 +66,7 @@
import com.ogoglio.xml.ThingDocument;
import com.ogoglio.xml.server.DocumentFactory;
-public class AccountServlet extends OgoglioServletBase {
+public class AccountServlet extends WebappServletBase{
public static final String SECRET_PARAMETER = "secret";
@@ -89,7 +90,12 @@
}
public SiteResource createBaseResource(ServletConfig servletConfig) {
- return new AccountsResource();
+ if (servletNeeded) {
+ return new AccountsResource();
+ } else {
+ Log.info("Turning off account servlet, this host doesn't want it.");
+ return new Four04SiteResource("account");
+ }
}
private class AccountsResource extends AuthenticatedSiteResource {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -12,6 +12,7 @@
See the License for the specific language governing permissions and
limitations under the License. */
package com.ogoglio.site;
+
import java.io.IOException;
import java.util.Random;
@@ -24,25 +25,32 @@
import org.hibernate.SessionFactory;
import com.ogoglio.appdev.persist.PersistException;
+import com.ogoglio.appdev.servlet.Four04SiteResource;
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
+import com.ogoglio.util.Log;
import com.ogoglio.util.WebConstants;
import com.ogoglio.xml.AccountDocument;
import com.ogoglio.xml.AuthDocument;
-public class AuthServlet extends OgoglioServletBase{
+public class AuthServlet extends WebappServletBase {
public static final String AUTH_DATA_KEY = "authData";
public static final String LOGOUT_PARAM = "logout";
private Random random = new Random();
-
+
//TODO add a way to remove a login cookie from the db when people change their password
public SiteResource createBaseResource(ServletConfig servletConfig) {
- return new AuthResource();
+ if (servletNeeded) {
+ return new AuthResource();
+ } else {
+ Log.info("Turning off auth servlet, this host doesn't want it.");
+ return new Four04SiteResource("account");
+ }
}
public static boolean isGuest(HttpServletRequest request) {
@@ -210,9 +218,9 @@
return;
}
}
-
+
}
-
+
private class GuestResource extends SiteResource {
public GuestResource() {
super("guest");
@@ -223,9 +231,9 @@
Cookie newCookie = new Cookie(WebConstants.AUTH_COOKIE, cookie);
newCookie.setPath("/");
newCookie.setMaxAge(-1);
-
+
response.addCookie(newCookie);
-
+
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("text/plain");
response.getOutputStream().write(cookie.getBytes());
@@ -236,7 +244,7 @@
public static final String COOKIE_CHARS = "abcdefghijklmnopqrstuvwxyz1234567890";
public static final String[] GUEST_NAMES = { "Moon", "Spoon", "Plume", "Bloom", "Thyme", "Rhyme", "Steel", "Boat", "Vase", "Book", "Screen", "Fenestra", "Farmer", "Door", "Squid", "Rocket", "Picker", "Page", "Lawn", "Food", "Plate", "Bean", "Horse", "Cat", "Fireplace", "Frame", "Chair", "Table", "Sofa", "Stair", "Counter", "Shelf", "Phone", "Robot", "Tree", "Key" };
-
+
private String generateGuestCookie() {
StringBuffer result = new StringBuffer();
result.append(WebConstants.GUEST_COOKIE_PREFIX);
@@ -245,7 +253,7 @@
}
return result.toString();
}
-
+
private String generateAuthCookie(boolean guest) {
StringBuffer result = new StringBuffer(14);
if (guest) {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthenticatedSiteResource.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -25,7 +25,6 @@
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.persist.AccountRecord;
import com.ogoglio.util.ArgumentUtils;
-import com.sun.mail.iap.Argument;
public abstract class AuthenticatedSiteResource extends SiteResource {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/MessageProxy.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -16,7 +16,6 @@
import java.io.IOException;
import java.net.URI;
-import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/OgoglioServletBase.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -51,8 +51,8 @@
super.init(config);
}
- private void bailOutOfInit(Exception e) throws ServletException {
- Log.error("Unable to initialize OgoglioServletBase ("+getClass().getName()+"):"+e.getMessage(),e);
+ public void bailOutOfInit(Exception e) throws ServletException {
+ Log.error("Unable to initialize "+getClass().getName()+"):"+e.getMessage(),e);
throw new ServletException(e);
}
public SiteInfo getSiteInfo() {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -26,6 +26,7 @@
import com.ogoglio.appdev.persist.PersistException;
import com.ogoglio.appdev.servlet.DescendingSiteResource;
+import com.ogoglio.appdev.servlet.Four04SiteResource;
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.SpaceClient;
import com.ogoglio.client.WebAPIClientWire;
@@ -51,7 +52,7 @@
import com.ogoglio.xml.SpaceSimulatorDocument;
import com.ogoglio.xml.server.DocumentFactory;
-public class SpaceServlet extends OgoglioServletBase {
+public class SpaceServlet extends WebappServletBase{
public static final String MESSAGE_PROXY_KEY = "spaceMessageProxy";
@@ -82,7 +83,12 @@
}
public SiteResource createBaseResource(ServletConfig servletConfig) {
- return new BaseSpaceResource();
+ if (servletNeeded) {
+ return new BaseSpaceResource();
+ } else {
+ Log.info("Turning off space servlet, this host doesn't want it.");
+ return new Four04SiteResource("account");
+ }
}
private class BaseSpaceResource extends AuthenticatedSiteResource {
@@ -481,7 +487,6 @@
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
-
SimRecord simRecord = SpacePersistTasks.findOrAssignSim(spaceRecord, getSessionFactory());
if (simRecord == null) {
Log.error("Could not assign a sim to space " + spaceRecord.getSpaceID());
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/TemplateResource.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -266,6 +266,7 @@
return;
}
long templateID = tid.longValue();
+ Log.info("Reached geometry resource:"+request.getPathInfo()+" user="+usernameParam+", tid="+templateID);
//trying to post to just /template/<TID>/geometry
if (pathElements.length == 5) {
@@ -285,6 +286,7 @@
}
return;
} catch (PersistException e) {
+ Log.info("Got Persist Exception:" +e.getMessage());
handlePersistException(response, e);
return;
}
Added: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java (rev 0)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/WebappServletBase.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -0,0 +1,27 @@
+package com.ogoglio.site;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+
+public abstract class WebappServletBase extends OgoglioServletBase {
+
+ protected boolean servletNeeded=true;
+
+ public void init(ServletConfig config) throws ServletException {
+ try {
+ initBaseUrl();
+ Context envCtx = (Context) initCtx.lookup("java:comp/env");
+ String useMe = (String) envCtx.lookup("ogoglio/isWebappServer");
+ if ("false".equals(useMe.toLowerCase())) {
+ servletNeeded=false;
+ }
+ super.init(config);
+ } catch (NamingException e) {
+ bailOutOfInit(e);
+ }
+ }
+
+}
Modified: maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/main/webapp/META-INF/context.xml 2007-10-01 21:55:49 UTC (rev 463)
@@ -14,4 +14,9 @@
<ResourceLink name="ogoglio/okMigrateDB" global="oktoMigrateDB" type="java.lang.String"/>
<ResourceLink name="ogoglio/simsAllowRemoteAccess" global="simsAllowRemoteAccess" type="java.lang.String"/>
<ResourceLink name="ogoglio/mediaDirectory" global="mediaDirectory" type="java.lang.String"/>
+
+ <ResourceLink name="ogoglio/isSimServer" global="isSimServer" type="java.lang.String"/>
+ <ResourceLink name="ogoglio/isMediaServer" global="isMediaServer" type="java.lang.String"/>
+ <ResourceLink name="ogoglio/isWebappServer" global="isWebappServer" type="java.lang.String"/>
+
</Context>
Copied: maven/trunk/ogoglio-server/src/main/webapp/WEB-INF/web-all.xml (from rev 436, maven/trunk/ogoglio-server/src/main/webapp/WEB-INF/web.xml)
===================================================================
--- maven/trunk/ogoglio-server/src/main/webapp/WEB-INF/web-all.xml (rev 0)
+++ maven/trunk/ogoglio-server/src/main/webapp/WEB-INF/web-all.xml 2007-10-01 21:55:49 UTC (rev 463)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
+ <servlet>
+ <servlet-name>AccountServlet</servlet-name>
+ <servlet-class>com.ogoglio.site.AccountServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>AuthServlet</servlet-name>
+ <servlet-class>com.ogoglio.site.AuthServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>SpaceServlet</servlet-name>
+ <servlet-class>com.ogoglio.site.SpaceServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>MediaServlet</servlet-name>
+ <servlet-class>com.ogoglio.media.site.MediaServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>SimServlet</servlet-name>
+ <servlet-class>com.ogoglio.sim.site.SimServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>AccountServlet</servlet-name>
+ <url-pattern>/account/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>AuthServlet</servlet-name>
+ <url-pattern>/auth/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SpaceServlet</servlet-name>
+ <url-pattern>/space/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SimServlet</servlet-name>
+ <url-pattern>/sim/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>MediaServlet</servlet-name>
+ <url-pattern>/media/*</url-pattern>
+ </servlet-mapping>
+
+ <error-page>
+ <error-code>404</error-code>
+ <location>/notFound.html</location>
+ </error-page>
+</web-app>
Modified: maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java
===================================================================
--- maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-10-01 13:57:55 UTC (rev 462)
+++ maven/trunk/ogoglio-server/src/test/java/com/ogoglio/persist/test/PersistTest.java 2007-10-01 21:55:49 UTC (rev 463)
@@ -229,8 +229,9 @@
SpaceRecord spaceRecord2 = SpacePersistTasks.findSpaceBySpaceID(spaceRecord1.getSpaceID(), sessionFactory);
assertEquals(spaceRecord1, spaceRecord2);
- SimRecord assignedSimRecord = SpacePersistTasks.findOrAssignSim(spaceRecord2, sessionFactory);
+ SimRecord assignedSimRecord = SpacePersistTasks.findOrAssignSim(spaceRecord2, sessionFactory, false);
assertNotNull(assignedSimRecord);
+ assertTrue(assignedSimRecord.isActive());
//System.out.println("XXX ASSIGNED TO SIM:"
// + assignedSimRecord.getSimID() + ","
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|