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
@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<String, PkgData> 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<T> List<T> listProperty(String property, Map<String,String> equalityConditions, Class<T> cls)
{
CriteriaBuilder builder = em.getCriteriaBuilder();
@@ -324,6 +328,7 @@ public class PacmanServiceEJB implements PacmanServiceView
@Override
@Lock(LockType.READ)
public List<PkgData> searchPackage(String name, String version, String arch, int pageNumber, int pageSize)
{
CriteriaBuilder builder;

View File

@@ -5,7 +5,7 @@
version="2.1">
<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>
<!--<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>-->
<property name="javax.persistence.schema-generation.database.action" value="none"/>