Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate не видит юнит, JBoss 7.1.1 
:(
    Опции темы
CPlusPlusFAN
Дата 13.9.2012, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Здравствуйте!

Сделал тестовый проект, чтобы посмотреть ORM.
У меня есть мускл, есть jdbc драйвер к нему.


Есть таблица:
Код

@Entity
public class MyTable
{
    private long id;
    private String name;
    
    
    public MyTable() {}
    
    public MyTable(final String name)
    {
        this.id = 0;
        this.name = name;
    }
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId()
    {
        return this.id;
    }
    
    public void setId(final long newId)
    {
        this.id = newId;
    }
    
    
    @Column(length = 30, nullable = false)
    public String getName()
    {
        return this.name;
    }
    
    public void setName(final String newName)
    {
        this.name = newName;
    }
}


Есть сервлет:
Код

@WebServlet("/test")
public class MyServlet extends HttpServlet
{
    @PersistenceContext(unitName = "myUnit")
    private EntityManager entityManager;

        // GET/POST методы пустые
}



Есть файл /WebContent/META-INF/persistence.xml:
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="myUnit">
        <properties>
            <property name="hibernate.archive.autodetection" value="class, hbm"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1/test"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.c3p0.min_size" value="5"/>
            <property name="hibernate.c3p0.max_size" value="20"/>
            <property name="hibernate.c3p0.timeout" value="300"/>
            <property name="hibernate.c3p0.max_statements" value="50"/>
            <property name="hibernate.c3p0.idle_test_period" value="3000"/>
        </properties>
    </persistence-unit>
</persistence>


И вот что за ошибка при деплое:
Код

08:45:01,737 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.unit."WebTest.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."WebTest.war".INSTALL: Failed to process phase INSTALL of deployment "WebTest.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_31]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_31]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_31]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011047: Component class ru.flaps.test.MyServlet for component ru.flaps.test.MyServlet has errors: 
JBAS011440: Can't find a persistence unit named myUnit in deployment "WebTest.war"
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:169)
    at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:162)
    at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:155)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more



Если я пишу так:
Код

final EntityManager entityManager = Persistence.createEntityManagerFactory("myUnit").createEntityManager();


То появляется ошибка:
Код

javax.persistence.PersistenceException: No Persistence provider for EntityManager named myUnit
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    ru.flaps.test.MyServlet.doGet(MyServlet.java:57)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847)


В принципе такая же ошибка появляется, при изменении имени юнита (так что это он опять не может найти юнит).


Кто сталкивался, подскажите пожалуйста!
PM MAIL ICQ Jabber   Вверх
AntonSaburov
Дата 13.9.2012, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Цитата(CPlusPlusFAN @  13.9.2012,  08:27 Найти цитируемый пост)
 No Persistence provider for EntityManager named myUnit

В persistence.xml надо видимо указать провайдера Hibernate
PM MAIL WWW ICQ   Вверх
CPlusPlusFAN
Дата 13.9.2012, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



AntonSaburov, нет. Надо было поместить файл в /src/META-INF.
Сейчас другая проблема. Он пишет:
Код

10:59:00,664 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-1) No suitable driver found for jdbc:mysql://localhost/test


Хотя, я с тем же урл, используя просто jdbc, нормально делал запрос и всё работало.

Вот код, который сейчас:
Код

@PersistenceContext(unitName = "myUnit", type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;

...

final MyTable item = this.entityManager.find(MyTable.class, 1L);
final PrintWriter out = response.getWriter();

out.println(item.getId() + " ==&gt; " + item.getName());

PM MAIL ICQ Jabber   Вверх
AntonSaburov
Дата 13.9.2012, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



А драйвер для MySQL есть ?
PM MAIL WWW ICQ   Вверх
CPlusPlusFAN
Дата 13.9.2012, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



jdbc? да.

Ну вот просто код:
Код

try
{
    new Driver();
            
    final String url = "jdbc:mysql://localhost/test";
    final String username = "root";
    final String password = "";
            
    this.connection = DriverManager.getConnection(url, username, password);
}
catch (final SQLException ex)
{
    this.connection = null;
}


нормально работает.

Я вот что думаю, может ему (хибернейту) ещё дополнительно что-то прописать ну там дата провайдер тот же или датасорс. может ему дополнительные конфиги нужны?
PM MAIL ICQ Jabber   Вверх
Старовъръ
Дата 22.9.2012, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Я так понимаю версия MySQL >= 5 и engine=InnoDB? В таком случае нужно использовать org.hibernate.dialect.MySQL5InnoDBDialect. Тот что указан у тебя используется для MySQL версии ниже пятой.
PS: создавай отдельные темы для разных вопросов.

Это сообщение отредактировал(а) Старовъръ - 22.9.2012, 10:30
PM MAIL WWW   Вверх
CPlusPlusFAN
Дата 18.10.2012, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Старовъръ, я сделал как вы сказали.

Код

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>


код не менял.

Ошибка осталась:
Код

23:34:07,246 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http-localhost-127.0.0.1-8080-1) No suitable driver found for jdbc:mysql://127.0.0.1/test
23:34:07,248 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[myhost].[/WebTest].[ru.test.MyServlet]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet ru.test.MyServlet threw exception: javax.persistence.PersistenceException: org.hibernate.HibernateException: Could not apply work
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1295) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:859) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:563) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
    at ru.test.MyServlet.doGet(MyServlet.java:36) [classes:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24]
Caused by: org.hibernate.HibernateException: Could not apply work
    at org.hibernate.engine.transaction.internal.jta.JtaIsolationDelegate.doTheWorkInNewTransaction(JtaIsolationDelegate.java:140) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.transaction.internal.jta.JtaIsolationDelegate.delegateWork(JtaIsolationDelegate.java:93) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:119) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.id.enhanced.OptimizerFactory$NoopOptimizer.generate(OptimizerFactory.java:252) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:353) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:78) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:208) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:151) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:725) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:701) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:705) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:853) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    ... 18 more
Caused by: org.hibernate.exception.JDBCConnectionException: unable to obtain isolated JDBC connection
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:131) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.transaction.internal.jta.JtaIsolationDelegate.doTheWork(JtaIsolationDelegate.java:181) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.transaction.internal.jta.JtaIsolationDelegate.doTheWorkInNewTransaction(JtaIsolationDelegate.java:129) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    ... 31 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1/test
    at java.sql.DriverManager.getConnection(DriverManager.java:640) [rt.jar:1.6.0_24]
    at java.sql.DriverManager.getConnection(DriverManager.java:169) [rt.jar:1.6.0_24]
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:173) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.engine.transaction.internal.jta.JtaIsolationDelegate.doTheWork(JtaIsolationDelegate.java:159) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
    ... 32 more


ЗЫ Извините, что так поздно написал. Я просто подзабросил эту тему и не ожидал, что кто-то ещё ответит.

Это сообщение отредактировал(а) CPlusPlusFAN - 18.10.2012, 22:35
PM MAIL ICQ Jabber   Вверх
Старовъръ
Дата 21.10.2012, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Хм.. а connection pool создается кем - апп сервером или внутри приложения? MySQL драйверов нет в других местах, например, в библиотеках апп сервера?
PM MAIL WWW   Вверх
CPlusPlusFAN
Дата 24.10.2012, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Старовъръ, скорее всего, сервером, судя по коду:
Код

@PersistenceContext(unitName = "myUnit")
private EntityManager entityManager;


Муксл скачивал отдельно. Посмотрел, в либах к серверу его нет.
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.