added thread safety to PacmanServiceEJB

changed JNDI name of default datasource
This commit is contained in:
2016-02-13 10:12:42 +01:00
parent 65d970c28f
commit 885f2d259f
2 changed files with 9 additions and 4 deletions

View File

@@ -31,6 +31,7 @@ import java.util.logging.Logger;
@Startup @Startup
@Singleton @Singleton
@TransactionManagement(TransactionManagementType.BEAN) @TransactionManagement(TransactionManagementType.BEAN)
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
public class PacmanServiceEJB implements PacmanServiceView public class PacmanServiceEJB implements PacmanServiceView
{ {
@PersistenceContext(unitName = "jpacrepo_pu") @PersistenceContext(unitName = "jpacrepo_pu")
@@ -49,8 +50,8 @@ public class PacmanServiceEJB implements PacmanServiceView
private Logger logger = Logger.getLogger(PacmanServiceEJB.class.getName()); private Logger logger = Logger.getLogger(PacmanServiceEJB.class.getName());
private String nameQuery = "SELECT pname FROM PkgName pname WHERE id = :name"; private final String nameQuery = "SELECT pname FROM PkgName pname WHERE id = :name";
private String hashQuery = "SELECT pdata FROM PkgData pdata WHERE md5sum = :md5sum"; private final String hashQuery = "SELECT pdata FROM PkgData pdata WHERE md5sum = :md5sum";
private Map<String, PkgData> knownPkg; private Map<String, PkgData> knownPkg;
@@ -143,6 +144,7 @@ public class PacmanServiceEJB implements PacmanServiceView
} }
@Override @Override
@Lock(LockType.READ)
public void deletePackage(String filename) throws Exception public void deletePackage(String filename) throws Exception
{ {
ut.begin(); 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)"; "(SELECT p2.name.id FROM PkgData p2 GROUP BY p2.name.id HAVING count(p2.name.id) > :minVersions\n)";
private void deleteOld() private void deleteOld()
@@ -244,6 +246,7 @@ public class PacmanServiceEJB implements PacmanServiceView
} }
@Override @Override
@Lock(LockType.READ)
public long countResults(String name, String version, String arch) public long countResults(String name, String version, String arch)
{ {
CriteriaBuilder builder; CriteriaBuilder builder;
@@ -283,6 +286,7 @@ public class PacmanServiceEJB implements PacmanServiceView
} }
@Override @Override
@Lock(LockType.READ)
public<T> List<T> listProperty(String property, Map<String,String> equalityConditions, Class<T> cls) public<T> List<T> listProperty(String property, Map<String,String> equalityConditions, Class<T> cls)
{ {
CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaBuilder builder = em.getCriteriaBuilder();
@@ -324,6 +328,7 @@ public class PacmanServiceEJB implements PacmanServiceView
@Override @Override
@Lock(LockType.READ)
public List<PkgData> searchPackage(String name, String version, String arch, int pageNumber, int pageSize) public List<PkgData> searchPackage(String name, String version, String arch, int pageNumber, int pageSize)
{ {
CriteriaBuilder builder; CriteriaBuilder builder;

View File

@@ -5,7 +5,7 @@
version="2.1"> version="2.1">
<persistence-unit name="jpacrepo_pu" transaction-type="JTA"> <persistence-unit name="jpacrepo_pu" transaction-type="JTA">
<jta-data-source>java:/odroid-c1</jta-data-source> <jta-data-source>java:/PostgresDS</jta-data-source>
<properties> <properties>
<!--<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>--> <!--<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>-->
<property name="javax.persistence.schema-generation.database.action" value="none"/> <property name="javax.persistence.schema-generation.database.action" value="none"/>