Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Опять проблемы с EJB


Автор: shedow 24.9.2008, 12:07
Добрый день (загрузился так, что забыл поздороваться  smile )

Никак не могу справиться с подключением к базе данных.
Сделал простенький проект в составе:
Java EE Application. В нем
EJB

Код

package PackData;

import javax.ejb.Stateless;

@Stateless
public class ProbaSessionBean {
    public ProbaSessionBean() {
    }
}


c ejb-jar.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
         version="3.0">
    <enterprise-beans>
        <session>
            <ejb-name>ProbaSessionBean</ejb-name>
            <ejb-class>PackData.ProbaSessionBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>


Затем JPA
Код

package ejb.PackData;

import javax.persistence.*;


@Entity
public class ProbaData {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}


с persistence.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

    <persistence-unit name="PersistenceUnit">


       <jta-data-source>jdbc/Material</jta-data-source>
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
          <property name="toplink.ddl-generation" value="create-tables"/>

        </properties>

       </persistence-unit>
</persistence>


ошибок нет, все хорошо. Сервер - GlassFish. 
Все это дело деплоится, в логах никаких ошибок нет, но таблица в базе не создается.
Подключение проверял на рабочем проекте - там все нормально. 
Подскажите, в чем может быть проблема.

Автор: Asal 24.9.2008, 13:22
shedow, а почему в persistence.xml не указан провайдер ?
try this
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

  <persistence-unit name="PersistenceUnit" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/Material</jta-data-source>
    <class>ejb.PackData.ProbaData</class>
    <properties>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
    </properties>
  </persistence-unit>
</persistence>

Автор: shedow 24.9.2008, 13:45
Провайдер не указан - это особенности GlassFish-а. В этом случае он использует встроенный TopLinк.
Впрочем, при переключении на Hibernate картина не меняется. И ошибок нет. Такое впечатление что JPA вообще не деплоится.

Автор: powerOn 24.9.2008, 15:46
не совсем понятно настроили ли Вы DataSource через админскую консоль и где используете EntityManager, типа:
Код

    @PersistenceContext(unitName = "PersistenceUnit")
    private EntityManager em;


думаю без его инициализации ничего создано не будет.

Автор: shedow 24.9.2008, 16:53
Именно!!! Именно его (контекст с менеджером)  я и забыл!!! 
Спасибо огромное. Топлинк стартанул, таблицу создал. Теперь буду разбираться, почему хибернейт отказывается работать.

Автор: shedow 26.9.2008, 13:33
Я извиняюсь, но тема рано помечена как решенная.  smile 
Проект работает на топлинке. На при попытке использовать в качестве провайдера хибенэйт - лезут ошибки.
Версия ядра и энтитименеджера 3,3,1. модули и их библиотеки сбросил в lib глассфиша. Выдает ошибки инициализации. Персистенс такой:

Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

<persistence-unit name="PersistenceUnit">

<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/Material</jta-data-source>
<class>ejb.PackData.ProbaData</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>

</properties>

</persistence-unit>
</persistence>


В чем может быть проблема?

Автор: powerOn 26.9.2008, 21:24
что за ошибки?

Автор: shedow 29.9.2008, 10:51
Ошибок 2 штуки, забрасываю с описанием

Код


Logger
    
javax.enterprise.system.stream.err

Name-Value Pairs
    
_ThreadID=19;_ThreadName=httpWorkerThread-4848-3;_RequestID=b5adb7fc-51dc-4117-bc7c-4eb7b6ac72f8;

Message ID
    
java.lang.NoClassDefFoundError

Complete Message
    
Could not initialize class org.hibernate.ejb.Ejb3Configuration at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:125)

 at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:149) at
 com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:84) at 
com.sun.enterprise.server.AbstractLoader.loadPersistenceUnits(AbstractLoader.java:898) at
 com.sun.enterprise.server.ApplicationLoader.doLoad(ApplicationLoader.java:184) at
 com.sun.enterprise.server.TomcatApplicationLoader.doLoad(TomcatApplicationLoader.java:126) at
 com.sun.enterprise.server.AbstractLoader.load(AbstractLoader.java:244) at

 com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:336) at 
com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:210) at

 com.sun.enterprise.server.ApplicationManager.applicationDeployed(ApplicationManager.java:645) at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeApplicationDeployEventListener(AdminEventMulticaster.java:928) 
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleApplicationDeployEvent(AdminEventMulticaster.java:912) 
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:461) 

at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:176) 
at 
com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308) 
at 
com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:226) 
at 
com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298) 
at 
com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132) 
at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108) 
at 
com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919) 
at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:591) at 
com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:635) at 
com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:744) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at 
java.lang.reflect.Method.invoke(Method.java:597) at 
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375) at 
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358) at 
com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464) at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761) at 
sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at 
java.lang.reflect.Method.invoke(Method.java:597) at 
com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90) at $Proxy1.invoke(Unknown 
Source) at 
com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304) at 
com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174) at 
com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeCaller.java:69) at 
com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(MBeanServerRequestHandler.java:155) 
at 
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.processRequest(RemoteJmxConnectorServlet.java:122) 
at 
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet.doPost(RemoteJmxConnectorServlet.java:193) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738) at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411) at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290) at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271) at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at 
com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270) at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637) 
at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) 
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813) 
at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) 
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) at 
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at 
com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadImpl.java:116)




и 

Код

Name-Value Pairs
    
_ThreadID=19;_ThreadName=httpWorkerThread-4848-3;Could not initialize class 
org.hibernate.ejb.Ejb3Configuration;_RequestID=b5adb7fc-51dc-4117-bc7c-4eb7b6ac72f8;


Record Number
    
3184

Message ID
    
ADM5603

Complete Message
    
Event listener error [Could not initialize class org.hibernate.ejb.Ejb3Configuration]

Автор: powerOn 29.9.2008, 20:50
Есть мнение, что нужно выполнить несколько дополнительных телодвижений что бы подружить glassfish с hibernate. Посмотрите вот http://www.hibernate.org/374.html материал.

Добавлено через 3 минуты и 32 секунды
Вот еще http://blogs.sun.com/GlassFishPersistence/#use_hibernate_as_a_persistence по теме.

Автор: shedow 30.9.2008, 09:54
Да, эти инструкции читал. Первая для шибко старой версии глассфиша, фактически и патча этого там нет. 
По второй инструкции, собственно, все и делал.  Толку пока никакого, хотя на одном проекте почему - то заработало...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)