Я пытаюсь использовать пример приложения JPA в apache-tomee-plus-1.6.0.2. Используемая база данных - H2.Проблема с JPA с H2 в apache-tomee
Когда я пытаюсь перераспределить webapp, в журнале tomee есть исключение Database may be already in use: Locked by another process.
. Фактически я вижу, что блокировка удерживается и не освобождается при перераспределении webapp.
См. Информацию по соответствующим файлам.
context.xml
<Resource
name="jdbc/ContactsDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.h2.Driver"
url="jdbc:h2:./repository/deployment/server/webapps/jpa-contacts-database/contacts;"
username="sa"
password="sa"
JtaManaged="true"/>
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="ContactsUnit">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>org.wso2.appserver.sample.ee.cdi.jpa.jaxws.Contact</class>
<properties>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"></property>
</properties>
</persistence-unit>
ContactManagerImpl.java
package org.wso2.appserver.sample.ee.cdi.jpa.jaxws;
import java.util.List;
import javax.ejb.Stateful;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import javax.persistence.Query;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@Stateful
@Named
public class ContactManagerImpl implements ContactManager {
private static final Log log = LogFactory.getLog(ContactManagerImpl.class);
@PersistenceContext(name = "ContactsUnit", type = PersistenceContextType.EXTENDED)
EntityManager entityManager;
@Override
public String addContact(Contact contact) throws Exception {
try {
entityManager.persist(contact);
return "Contact was saved successfully.";
} catch (Exception e) {
log.error(e.getMessage(), e);
return "Error Occurred : " + e.getMessage();
}
}
@Override
public List<Contact> getContacts() {
Query query = entityManager.createQuery("SELECT Contact contact FROM Contact contact");
return query.getResultList();
}
}
Как я могу решить эту проблему? Я делаю что-то неправильно в коде/конфигурации здесь?
ошибка при разработке или развертывании – vels4j
, когда я развертываю его при первом запуске, но когда я пытаюсь выполнить повторное развертывание, возникает ошибка. –