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>
@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,