2015-07-07 2 views
0

Я пытаюсь использовать пример приложения 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(); 
} 

} 

Как я могу решить эту проблему? Я делаю что-то неправильно в коде/конфигурации здесь?

+0

ошибка при разработке или развертывании – vels4j

+0

, когда я развертываю его при первом запуске, но когда я пытаюсь выполнить повторное развертывание, возникает ошибка. –

ответ

0

У меня была та же проблема. Предоставление URL-адреса за пределами каталога webapps решило проблему. Например, я выбрал ~/h2webdb/webui