]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
Adding timeout params to our JDBC datasources -see http://people.apache.org/~fhanik...
authorRichard Millet <remillet@berkeley.edu>
Tue, 7 Jan 2014 19:06:17 +0000 (11:06 -0800)
committerRichard Millet <remillet@berkeley.edu>
Tue, 7 Jan 2014 19:06:17 +0000 (11:06 -0800)
services/JaxRsServiceProvider/src/main/webapp/META-INF/context.xml
services/authorization/service/src/main/java/org/collectionspace/services/authorization/spring/SpringPermissionEvaluator.java
services/common/src/main/java/org/collectionspace/services/common/document/TransactionException.java

index a534188f69c20225742ee77eaa7c4b597cfba6bc..1755aaf484acaead4473607e5a171466a052786d 100644 (file)
@@ -47,6 +47,7 @@
         factory="org.nuxeo.runtime.jtajca.NuxeoTransactionManagerFactory"
         transactionTimeoutSeconds="300"/>
     <Transaction factory="org.nuxeo.runtime.jtajca.NuxeoUserTransactionFactory"/>
+    
     <Resource name="NuxeoConnectionManager" auth="Container"
         type="javax.resource.spi.ConnectionManager"
         factory="org.nuxeo.runtime.jtajca.NuxeoConnectionManagerFactory" minPoolSize="0"
     <!-- 
                For CollectionSpace services
         -->
-    <Resource name="jdbc/CspaceDS"
-           auth="Container"
-           type="javax.sql.DataSource"
-           username="${db.user}"
-           password="${db.user.password}"
-           driverClassName="${db.jdbc.driver.class}"
-           url="${db.jdbc.cspace.url}"
-           maxActive="8"
-           maxIdle="4"/>
+        
+       <Resource name="jdbc/CspaceDS"
+               auth="Container"
+               type="javax.sql.DataSource"
+               username="${db.user}"
+               password="${db.user.password}"
+               driverClassName="${db.jdbc.driver.class}"
+               url="${db.jdbc.cspace.url}"
+               maxActive="8"
+               maxIdle="4"
+               testWhileIdle="true"
+               validationQuery="SELECT 1"
+               logAbandoned="true"/>
                
        <Resource name="jdbc/NuxeoDS"
-           auth="Container"
-           type="javax.sql.DataSource"
-           username="${db.nuxeo.user}"
-           password="${db.nuxeo.user.password}"
-           driverClassName="${db.jdbc.driver.class}"
-           url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
-           maxActive="8"
-           maxIdle="4"/>       
+               auth="Container"
+               type="javax.sql.DataSource"
+               username="${db.nuxeo.user}"
+               password="${db.nuxeo.user.password}"
+               driverClassName="${db.jdbc.driver.class}"
+               url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
+               maxActive="8"
+               maxIdle="4"
+               testWhileIdle="true"
+               validationQuery="SELECT 1"
+               logAbandoned="true"/>
 
-  <Resource name="jdbc/NuxeoMgrDS"
-    auth="Container"
-    type="javax.sql.DataSource"
-    username="${db.user}"
-    password="${db.user.password}"
-    driverClassName="${db.jdbc.driver.class}"
-    url="${db.jdbc.csadmin.url}"
-    maxActive="8"
-    maxIdle="4"/>      
+       <Resource name="jdbc/NuxeoMgrDS"
+               auth="Container"
+               type="javax.sql.DataSource"
+               username="${db.user}"
+               password="${db.user.password}"
+               driverClassName="${db.jdbc.driver.class}"
+               url="${db.jdbc.csadmin.url}"
+               maxActive="8"
+               maxIdle="4"
+               testWhileIdle="true"
+               validationQuery="SELECT 1"
+               logAbandoned="true"/>
   
   <Resource name="jdbc/NuxeoReaderDS"
-           auth="Container"
-           type="javax.sql.DataSource"
-           username="reader"
-           password="read"
-           driverClassName="${db.jdbc.driver.class}"
-           url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
-           maxActive="8"
-           maxIdle="4"/>       
+               auth="Container"
+               type="javax.sql.DataSource"
+               username="reader"
+               password="read"
+               driverClassName="${db.jdbc.driver.class}"
+               url="jdbc:${db}://${db.host}:${db.port}/${DatabaseName}"
+               maxActive="8"
+               maxIdle="4"
+               testWhileIdle="true"
+               validationQuery="SELECT 1"
+               logAbandoned="true"/>
 
 </Context>
index e8fce22f92728434227122fc6a3a32e28da842fa..bdb1e80cd7ed181b49445e6992bfe7275e496b71 100644 (file)
@@ -52,15 +52,26 @@ public class SpringPermissionEvaluator implements CSpacePermissionEvaluator {
 
     @Override
     public boolean hasPermission(CSpaceResource res, CSpaceAction action) {
-        Permission perm = SpringAuthorizationProvider.getPermission(action);
-        Authentication authToken = SecurityContextHolder.getContext().getAuthentication();
-        Serializable objectIdId = SpringAuthorizationProvider.getObjectIdentityIdentifier(res);
-        String objectIdType = SpringAuthorizationProvider.getObjectIdentityType(res);
-        PermissionEvaluator eval = provider.getProviderPermissionEvaluator();
+       boolean result = false;
+       
+       try {
+               Permission perm = SpringAuthorizationProvider.getPermission(action);
+               Authentication authToken = SecurityContextHolder.getContext().getAuthentication();
+               Serializable objectIdId = SpringAuthorizationProvider.getObjectIdentityIdentifier(res);
+               String objectIdType = SpringAuthorizationProvider.getObjectIdentityType(res);
+               PermissionEvaluator eval = provider.getProviderPermissionEvaluator();
+               
+               debug(res, authToken, objectIdId, objectIdType, perm);
+               result = eval.hasPermission(authToken,
+                       objectIdId, objectIdType, perm);
+       } catch (Exception e) {
+               //
+               // If this exception is caused by a network timeout, we may want to reattempt
+               //
+               log.error("Unexpected exception encountered while evaluating permissions.", e);
+       }
         
-        debug(res, authToken, objectIdId, objectIdType, perm);
-        return eval.hasPermission(authToken,
-                objectIdId, objectIdType, perm);
+        return result;
     }
     
     private void debug(CSpaceResource res,
index 2f49eb0afb8470ecc1b83aef430ddc3855af4dcd..92316e0d4139b7b52235c35a2224fa955a28ac6a 100644 (file)
@@ -23,7 +23,12 @@ package org.collectionspace.services.common.document;
  */
 public class TransactionException extends DocumentException {
 
-    // Custom HTTP status code, per the extensibility offered via RFC-2616
+    /**
+        * 
+        */
+       private static final long serialVersionUID = 1L;
+
+       // Custom HTTP status code, per the extensibility offered via RFC-2616
     // e.g. http://tools.ietf.org/html/rfc2616#section-6.1.1
     final public static int HTTP_CODE = 590;