[mapguide-commits] r5439 - in trunk/MgDev: Common/Foundation/System
Common/MapGuideCommon/System Server/src/Core
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Fri Dec 3 18:01:39 EST 2010
Author: brucedechant
Date: 2010-12-03 15:01:39 -0800 (Fri, 03 Dec 2010)
New Revision: 5439
Modified:
trunk/MgDev/Common/Foundation/System/Resources.cpp
trunk/MgDev/Common/Foundation/System/Resources.h
trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.cpp
trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.h
trunk/MgDev/Server/src/Core/Server.cpp
trunk/MgDev/Server/src/Core/serverconfig.ini
Log:
Fix for trac ticket 1549 - Precache maps at server startup
http://trac.osgeo.org/mapguide/ticket/1549
Notes:
- Added serverconfig.ini PreCacheMaps property to the GeneralProperties section to allow specifying map definitions to precache at sever startup
Modified: trunk/MgDev/Common/Foundation/System/Resources.cpp
===================================================================
--- trunk/MgDev/Common/Foundation/System/Resources.cpp 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Common/Foundation/System/Resources.cpp 2010-12-03 23:01:39 UTC (rev 5439)
@@ -52,6 +52,7 @@
const STRING MgResources::LicenseInvalidSerialNumber = L"Invalid serial number.";
const STRING MgResources::LicenseCheckoutError = L"Generic license checkout error.";
const STRING MgResources::LicenseNotFound = L"The license was not found.";
+const STRING MgResources::PreCacheMapsStart = L"Precaching the following Maps:";
Modified: trunk/MgDev/Common/Foundation/System/Resources.h
===================================================================
--- trunk/MgDev/Common/Foundation/System/Resources.h 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Common/Foundation/System/Resources.h 2010-12-03 23:01:39 UTC (rev 5439)
@@ -235,6 +235,7 @@
static const STRING LicenseCheckoutCancel;
static const STRING LicenseCheckoutError;
static const STRING LicenseInvalidSerialNumber;
+ static const STRING PreCacheMapsStart;
static const STRING UsingDefaultResourceFile;
Modified: trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.cpp
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.cpp 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.cpp 2010-12-03 23:01:39 UTC (rev 5439)
@@ -168,6 +168,8 @@
const STRING MgConfigProperties::DefaultGeneralPropertyRenderer = L"GD";
const STRING MgConfigProperties::GeneralPropertyFailoverRetryTime = L"FailoverRetryTime"; // for internal use only
const INT32 MgConfigProperties::DefaultGeneralPropertyFailoverRetryTime = 60;
+const STRING MgConfigProperties::GeneralPropertyPreCacheMaps = L"PreCacheMaps";
+const STRING MgConfigProperties::DefaultGeneralPropertyPreCacheMaps = L"";
// ******************************************************************
// Administrative Connection Properties
Modified: trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.h
===================================================================
--- trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.h 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Common/MapGuideCommon/System/ConfigProperties.h 2010-12-03 23:01:39 UTC (rev 5439)
@@ -134,6 +134,10 @@
static const STRING GeneralPropertyRenderer; /// value("Renderer")
static const STRING DefaultGeneralPropertyRenderer; /// value("GD")
+ /// Sets the maps to precache
+ static const STRING GeneralPropertyPreCacheMaps; /// value("PreCacheMaps")
+ static const STRING DefaultGeneralPropertyPreCacheMaps; /// value("")
+
INTERNAL_API:
static const STRING GeneralPropertyWorkerThreadPoolSize; /// value("WorkerThreadPoolSize")
Modified: trunk/MgDev/Server/src/Core/Server.cpp
===================================================================
--- trunk/MgDev/Server/src/Core/Server.cpp 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Server/src/Core/Server.cpp 2010-12-03 23:01:39 UTC (rev 5439)
@@ -29,6 +29,7 @@
#include "LongTransactionManager.h"
#include "CacheManager.h"
#include "ServerFeatureTransactionPool.h"
+#include "ServerResourceService.h"
#include "Stylizer.h"
#include "Bounds.h"
@@ -1110,6 +1111,57 @@
ACE_DEBUG ((LM_DEBUG, ACE_TEXT(" Parameters : %s\n"), MG_WCHAR_TO_TCHAR(pLogManager->GetTraceLogParameters())));
ACE_DEBUG ((LM_DEBUG, ACE_TEXT("\n")));
#endif
+
+ if((!m_bTestMode) && (!m_bTestFdo))
+ {
+ // Precache the specified maps
+ STRING preCacheMaps;
+ pConfiguration->GetStringValue(MgConfigProperties::GeneralPropertiesSection, MgConfigProperties::GeneralPropertyPreCacheMaps, preCacheMaps, MgConfigProperties::DefaultGeneralPropertyPreCacheMaps);
+
+ // Check if there is actually anything to precache
+ if(!preCacheMaps.empty())
+ {
+ Ptr<MgStringCollection> preCacheMapsCollection;
+ preCacheMapsCollection = MgStringCollection::ParseCollection(preCacheMaps, L",");
+
+ if(preCacheMapsCollection->GetCount() > 0)
+ {
+ Ptr<MgUserInformation> userInfo = new MgUserInformation(MgUser::Administrator, L"");
+ MgUserInformation::SetCurrentUserInfo(userInfo);
+
+ Ptr<MgSiteConnection> siteConnection = new MgSiteConnection();
+ siteConnection->Open(userInfo);
+
+ Ptr<MgServerResourceService> resourceService = dynamic_cast<MgServerResourceService*>(pServiceManager->RequestService(MgServiceType::ResourceService));
+ assert(NULL != resourceService.p);
+
+ ACE_DEBUG((LM_INFO, ACE_TEXT("%W\n"), MgResources::PreCacheMapsStart.c_str()));
+
+ for(INT32 i=0;i<preCacheMapsCollection->GetCount();i++)
+ {
+ try
+ {
+ STRING mapRes = preCacheMapsCollection->GetItem(i);
+ ACE_DEBUG((LM_INFO, ACE_TEXT(" %W "), mapRes.c_str()));
+ Ptr<MgResourceIdentifier> mapResId = new MgResourceIdentifier(mapRes);
+ Ptr<MgMap> map = new MgMap(siteConnection);
+ map->Create(resourceService, mapResId, L"PreCacheMap");
+ ACE_DEBUG((LM_INFO, ACE_TEXT("<%W>\n"), MgResources::Success.c_str()));
+ }
+ catch(MgException* e)
+ {
+ // Skip map entries that fail to be cached
+ STRING message = e->GetDetails();
+ SAFE_RELEASE(e);
+ ACE_DEBUG((LM_INFO, ACE_TEXT("<%W> %W\n"), MgResources::Failure.c_str(), message.c_str()));
+ }
+ }
+
+ ACE_DEBUG((LM_INFO, ACE_TEXT("\n")));
+ MgUserInformation::SetCurrentUserInfo(NULL);
+ }
+ }
+ }
}
}
MG_CATCH(L"MgServer.open")
Modified: trunk/MgDev/Server/src/Core/serverconfig.ini
===================================================================
--- trunk/MgDev/Server/src/Core/serverconfig.ini 2010-12-03 18:44:50 UTC (rev 5438)
+++ trunk/MgDev/Server/src/Core/serverconfig.ini 2010-12-03 23:01:39 UTC (rev 5439)
@@ -69,6 +69,9 @@
# kilobytes (KB)
# 0 < Value <= 2000000
# MaxLogFileSizeEnabled 0 = max size disabled, 1 = max size enabled
+# PreCacheMaps The list of maps to precache at server startup.
+# Value = Map resource name(s) separated by ","
+# Example: Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition
# Renderer Image renderer to use (GD or AGG)
# ResourcesPath Path where the localization resource files are stored
# SerialNumber The MapGuide Server serial number (not used by MapGuide Open Source)
@@ -92,6 +95,7 @@
MachineIp = 127.0.0.1
MaxLogFileSize = 1024
MaxLogFileSizeEnabled = 0
+PreCacheMaps =
Renderer = AGG
ResourcesPath = Resources/
SerialNumber =
More information about the mapguide-commits
mailing list