Repository: airavata Updated Branches: refs/heads/master 013a815ce -> a728ab500
making JPA cache limit configurable from server properties Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/a728ab50 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/a728ab50 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/a728ab50 Branch: refs/heads/master Commit: a728ab5003282f4c7645fa2bf7c40fd7df97f447 Parents: 013a815 Author: Chathuri Wimalasena <[email protected]> Authored: Mon Jun 9 12:19:38 2014 -0400 Committer: Chathuri Wimalasena <[email protected]> Committed: Mon Jun 9 12:19:38 2014 -0400 ---------------------------------------------------------------------- .../application/catalog/data/util/JPAUtils.java | 14 ++- .../main/resources/airavata-server.properties | 1 + .../persistance/registry/jpa/JPAConstants.java | 2 +- .../persistance/registry/jpa/ResourceUtils.java | 27 +++--- .../registry/jpa/resources/Utils.java | 94 ++++++-------------- 5 files changed, 45 insertions(+), 93 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/a728ab50/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/JPAUtils.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/JPAUtils.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/JPAUtils.java index b7f4a76..7bad1a6 100644 --- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/JPAUtils.java +++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/util/JPAUtils.java @@ -40,7 +40,7 @@ public class JPAUtils { private static final String APPCATALOG_JDBC_USER = "appcatalog.jdbc.user"; private static final String APPCATALOG_JDBC_PWD = "appcatalog.jdbc.password"; private static final String APPCATALOG_VALIDATION_QUERY = "appcatalog.validationQuery"; - private static final String JPA_CONNECTION_PROPERTIES = "jpa.connection.properties"; + private static final String JPA_CACHE_SIZE = "jpa.cache.size"; protected static EntityManagerFactory factory; public static EntityManager getEntityManager() throws ApplicationSettingsException { @@ -49,22 +49,18 @@ public class JPAUtils { "Url=" + readServerProperties(APPCATALOG_JDBC_URL) + "," + "Username=" + readServerProperties(APPCATALOG_JDBC_USER) + "," + "Password=" + readServerProperties(APPCATALOG_JDBC_PWD) + - ",validationQuery=" + readServerProperties(APPCATALOG_VALIDATION_QUERY) + "," + - readServerProperties(JPA_CONNECTION_PROPERTIES); + ",validationQuery=" + readServerProperties(APPCATALOG_VALIDATION_QUERY); System.out.println(connectionProperties); Map<String, String> properties = new HashMap<String, String>(); properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource"); properties.put("openjpa.ConnectionProperties", connectionProperties); properties.put("openjpa.DynamicEnhancementAgent", "true"); properties.put("openjpa.RuntimeUnenhancedClasses", "unsupported"); - properties.put("openjpa.Log", "SQL=ERROR"); + properties.put("openjpa.DataCache","true(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)"); + properties.put("openjpa.QueryCache","true(CacheSize=" + Integer.valueOf(readServerProperties(JPA_CACHE_SIZE)) + ", SoftReferenceSize=0)"); + properties.put("openjpa.RemoteCommitProvider","sjvm"); properties.put("openjpa.Log","DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO"); - properties.put("openjpa.ReadLockLevel", "none"); - properties.put("openjpa.WriteLockLevel", "none"); - properties.put("openjpa.LockTimeout", "30000"); - properties.put("openjpa.LockManager", "none"); properties.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true)"); - properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000"); properties.put("openjpa.jdbc.QuerySQLCache", "false"); factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties); } http://git-wip-us.apache.org/repos/asf/airavata/blob/a728ab50/modules/configuration/server/src/main/resources/airavata-server.properties ---------------------------------------------------------------------- diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties index d1335f7..98bdcec 100644 --- a/modules/configuration/server/src/main/resources/airavata-server.properties +++ b/modules/configuration/server/src/main/resources/airavata-server.properties @@ -63,6 +63,7 @@ registry.jdbc.user=airavata registry.jdbc.password=airavata start.derby.server.mode=true validationQuery=SELECT 1 from CONFIGURATION +jpa.cache.size=5000 #jpa.connection.properties=MaxActive=10,MaxIdle=5,MinIdle=2,MaxWait=60000,testWhileIdle=true,testOnBorrow=true # Properties to setup registry service default.registry.user=admin http://git-wip-us.apache.org/repos/asf/airavata/blob/a728ab50/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java index 333e1f4..bba422e 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/JPAConstants.java @@ -28,5 +28,5 @@ public class JPAConstants { public static final String KEY_JDBC_DRIVER = "registry.jdbc.driver"; public static final String KEY_DERBY_START_ENABLE = "start.derby.server.mode"; public static final String VALIDATION_QUERY = "validationQuery"; - public static final String CONNECTION_JPA_PROPERTY = "jpa.connection.properties"; + public static final String JPA_CACHE_SIZE = "jpa.connection.properties"; } http://git-wip-us.apache.org/repos/asf/airavata/blob/a728ab50/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java index 1253020..4c44f00 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/ResourceUtils.java @@ -20,18 +20,6 @@ */ package org.apache.airavata.persistance.registry.jpa; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import javax.persistence.Query; - import org.apache.airavata.persistance.registry.jpa.model.*; import org.apache.airavata.persistance.registry.jpa.resources.*; import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator; @@ -39,6 +27,15 @@ import org.apache.airavata.registry.cpi.RegistryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.Query; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class ResourceUtils { private final static Logger logger = LoggerFactory.getLogger(ResourceUtils.class); private static final String PERSISTENCE_UNIT_NAME = "airavata_data"; @@ -52,15 +49,15 @@ public class ResourceUtils { if (factory == null) { String connectionProperties = "DriverClassName=" + Utils.getJDBCDriver() + "," + "Url=" + Utils.getJDBCURL() + "," + "Username=" + Utils.getJDBCUser() + "," + "Password=" + Utils.getJDBCPassword() + ",validationQuery=" + - Utils.getValidationQuery() + "," + Utils.getJPAConnectionProperties(); + Utils.getValidationQuery(); System.out.println(connectionProperties); Map<String, String> properties = new HashMap<String, String>(); properties.put("openjpa.ConnectionDriverName", "org.apache.commons.dbcp.BasicDataSource"); properties.put("openjpa.ConnectionProperties", connectionProperties); properties.put("openjpa.DynamicEnhancementAgent", "true"); properties.put("openjpa.RuntimeUnenhancedClasses", "unsupported"); - properties.put("openjpa.DataCache","true(CacheSize=5000, SoftReferenceSize=0)"); - properties.put("openjpa.QueryCache","true(CacheSize=5000, SoftReferenceSize=0)"); + properties.put("openjpa.DataCache","true(CacheSize=" + Utils.getJPACacheSize() + ", SoftReferenceSize=0)"); + properties.put("openjpa.QueryCache","true(CacheSize=" + Utils.getJPACacheSize() + ", SoftReferenceSize=0)"); properties.put("openjpa.RemoteCommitProvider","sjvm"); properties.put("openjpa.Log","DefaultLevel=INFO, Runtime=INFO, Tool=INFO, SQL=INFO"); // properties.put("openjpa.ReadLockLevel", "none"); http://git-wip-us.apache.org/repos/asf/airavata/blob/a728ab50/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java ---------------------------------------------------------------------- diff --git a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java index 90bcdc5..a94efd5 100644 --- a/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java +++ b/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/Utils.java @@ -20,19 +20,17 @@ */ package org.apache.airavata.persistance.registry.jpa.resources; -import java.net.URI; - +import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.persistance.registry.jpa.JPAConstants; import org.apache.airavata.persistance.registry.jpa.Resource; import org.apache.airavata.persistance.registry.jpa.ResourceType; import org.apache.airavata.persistance.registry.jpa.model.*; -import org.apache.airavata.registry.api.AiravataRegistryConnectionDataProvider; -import org.apache.airavata.registry.api.AiravataRegistryFactory; -import org.apache.airavata.registry.api.exception.RegistrySettingsException; -import org.apache.airavata.registry.api.util.RegistrySettings; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.net.URI; + public class Utils { private final static Logger logger = LoggerFactory.getLogger(Utils.class); @@ -47,8 +45,8 @@ public class Utils { public static String getJDBCURL(){ try { - return getProvider().getValue(JPAConstants.KEY_JDBC_URL).toString(); - } catch (RegistrySettingsException e) { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_URL); + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return null; } @@ -78,6 +76,16 @@ public class Utils { } } + public static int getJPACacheSize (){ + try { + String cache = ServerSettings.getSetting(JPAConstants.JPA_CACHE_SIZE, "5000"); + return Integer.valueOf(cache); + }catch (Exception e){ + logger.error(e.getMessage(), e); + return -1; + } + } + public static String getDBType(){ try{ String jdbcURL = getJDBCURL(); @@ -92,36 +100,21 @@ public class Utils { public static boolean isDerbyStartEnabled(){ try { - String s = getProvider().getValue(JPAConstants.KEY_DERBY_START_ENABLE).toString(); + String s = ServerSettings.getSetting(JPAConstants.KEY_DERBY_START_ENABLE); if("true".equals(s)){ return true; } - } catch (RegistrySettingsException e) { + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return false; } return false; } - private static AiravataRegistryConnectionDataProvider getProvider() { - return AiravataRegistryFactory.getRegistryConnectionDataProvider(); - } - - static { - if(AiravataRegistryFactory.getRegistryConnectionDataProvider() == null){ - AiravataRegistryFactory.registerRegistryConnectionDataProvider(new AiravataRegistryConnectionDataProviderImpl()); - } - - } - public static String getJDBCUser(){ try { - if (getProvider()!=null){ - return getProvider().getValue(JPAConstants.KEY_JDBC_USER).toString(); - } else { - return RegistrySettings.getSetting(JPAConstants.KEY_JDBC_USER); - } - } catch (RegistrySettingsException e) { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_USER); + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return null; } @@ -129,35 +122,8 @@ public class Utils { public static String getValidationQuery(){ try { - if (getProvider()!=null){ - if(getProvider().getValue(JPAConstants.VALIDATION_QUERY) != null){ - return getProvider().getValue(JPAConstants.VALIDATION_QUERY).toString(); - } - } else { - if(getProvider().getValue(JPAConstants.VALIDATION_QUERY) != null){ - return RegistrySettings.getSetting(JPAConstants.VALIDATION_QUERY); - } - } - return ""; - } catch (RegistrySettingsException e) { - logger.error(e.getMessage(), e); - return null; - } - } - - public static String getJPAConnectionProperties(){ - try { - if (getProvider()!=null){ - if(getProvider().getValue(JPAConstants.CONNECTION_JPA_PROPERTY) != null){ - return getProvider().getValue(JPAConstants.CONNECTION_JPA_PROPERTY).toString(); - } - } else { - if(getProvider().getValue(JPAConstants.CONNECTION_JPA_PROPERTY) != null){ - return RegistrySettings.getSetting(JPAConstants.CONNECTION_JPA_PROPERTY); - } - } - return ""; - } catch (RegistrySettingsException e) { + return ServerSettings.getSetting(JPAConstants.VALIDATION_QUERY); + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return null; } @@ -165,12 +131,8 @@ public class Utils { public static String getJDBCPassword(){ try { - if (getProvider()!=null){ - return getProvider().getValue(JPAConstants.KEY_JDBC_PASSWORD).toString(); - }else { - return RegistrySettings.getSetting(JPAConstants.KEY_JDBC_PASSWORD); - } - } catch (RegistrySettingsException e) { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_PASSWORD); + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return null; } @@ -179,12 +141,8 @@ public class Utils { public static String getJDBCDriver(){ try { - if (getProvider()!=null){ - return getProvider().getValue(JPAConstants.KEY_JDBC_DRIVER).toString(); - } else { - return RegistrySettings.getSetting(JPAConstants.KEY_JDBC_DRIVER); - } - } catch (RegistrySettingsException e) { + return ServerSettings.getSetting(JPAConstants.KEY_JDBC_DRIVER); + } catch (ApplicationSettingsException e) { logger.error(e.getMessage(), e); return null; }
