From 885f2d259fe036949189fb8a39ce296ce3ded01b Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Sat, 13 Feb 2016 10:12:42 +0100 Subject: [PATCH] added thread safety to PacmanServiceEJB changed JNDI name of default datasource --- .../java/org/jpacrepo/service/PacmanServiceEJB.java | 11 ++++++++--- src/main/resources/META-INF/persistence.xml | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java b/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java index 8d6786a..6e3e87b 100644 --- a/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java +++ b/src/main/java/org/jpacrepo/service/PacmanServiceEJB.java @@ -31,6 +31,7 @@ import java.util.logging.Logger; @Startup @Singleton @TransactionManagement(TransactionManagementType.BEAN) +@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) public class PacmanServiceEJB implements PacmanServiceView { @PersistenceContext(unitName = "jpacrepo_pu") @@ -49,8 +50,8 @@ public class PacmanServiceEJB implements PacmanServiceView private Logger logger = Logger.getLogger(PacmanServiceEJB.class.getName()); - private String nameQuery = "SELECT pname FROM PkgName pname WHERE id = :name"; - private String hashQuery = "SELECT pdata FROM PkgData pdata WHERE md5sum = :md5sum"; + private final String nameQuery = "SELECT pname FROM PkgName pname WHERE id = :name"; + private final String hashQuery = "SELECT pdata FROM PkgData pdata WHERE md5sum = :md5sum"; private Map knownPkg; @@ -143,6 +144,7 @@ public class PacmanServiceEJB implements PacmanServiceView } @Override + @Lock(LockType.READ) public void deletePackage(String filename) throws Exception { ut.begin(); @@ -219,7 +221,7 @@ public class PacmanServiceEJB implements PacmanServiceView } - private String deleteQuery = "SELECT p.fileName FROM PkgData p WHERE p.buildDate < :cutoff and p.name.id in \n" + + private final String deleteQuery = "SELECT p.fileName FROM PkgData p WHERE p.buildDate < :cutoff and p.name.id in \n" + "(SELECT p2.name.id FROM PkgData p2 GROUP BY p2.name.id HAVING count(p2.name.id) > :minVersions\n)"; private void deleteOld() @@ -244,6 +246,7 @@ public class PacmanServiceEJB implements PacmanServiceView } @Override + @Lock(LockType.READ) public long countResults(String name, String version, String arch) { CriteriaBuilder builder; @@ -283,6 +286,7 @@ public class PacmanServiceEJB implements PacmanServiceView } @Override + @Lock(LockType.READ) public List listProperty(String property, Map equalityConditions, Class cls) { CriteriaBuilder builder = em.getCriteriaBuilder(); @@ -324,6 +328,7 @@ public class PacmanServiceEJB implements PacmanServiceView @Override + @Lock(LockType.READ) public List searchPackage(String name, String version, String arch, int pageNumber, int pageSize) { CriteriaBuilder builder; diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 958101c..fd457c6 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -5,7 +5,7 @@ version="2.1"> - java:/odroid-c1 + java:/PostgresDS