You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ch...@apache.org on 2014/06/09 18:19:44 UTC
git commit: making JPA cache limit configurable from server properties
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 <ka...@gmail.com>
Authored: Mon Jun 9 12:19:38 2014 -0400
Committer: Chathuri Wimalasena <ka...@gmail.com>
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;
}