Объекты не создаются в базе данных - PullRequest
1 голос
/ 12 марта 2012

В следующей части моей саги о том, чтобы EJB работал, надеясь, что кто-то здесь может помочь мне

Вот мой журнал сервера, в котором говорится, что мое развертывание прошло успешно:

2012-03-11 22:02:41,837 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) undeploy, ctxPath=/SE2-war
2012-03-11 22:02:41,882 INFO  [org.jboss.jpa.deployment.PersistenceUnitDeployment] (HDScanner) Stopping persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:42,429 WARN  [org.jboss.ejb3.interceptor.InterceptorInfoRepository] (HDScanner) EJBTHREE-1852: InterceptorInfoRepository is deprecated
2012-03-11 22:02:42,650 INFO  [org.jboss.profileservice.management.upload.remoting.DeployHandler] (WorkerThread#0[127.0.0.1:3125]) invoke, payload: {DeploymentTargetID=names=[SE2.ear], clientAddress=/127.0.0.1}, parameter: start
2012-03-11 22:02:42,900 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Created KernelDeployment for: SE2-ejb.jar
2012-03-11 22:02:42,901 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) installing bean: jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:42,901 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)   with dependencies:
2012-03-11 22:02:42,901 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)   and demands:
2012-03-11 22:02:42,902 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  jboss-switchboard:appName=SE2,module=SE2-ejb,name=NewSessionBean; Required: Create
2012-03-11 22:02:42,902 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  jboss.ejb:service=EJBTimerService; Required: Described
2012-03-11 22:02:42,902 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)   and supplies:
2012-03-11 22:02:42,903 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  Class:ejb.NewSessionBeanRemote
2012-03-11 22:02:42,903 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  jndi:NewSessionBean
2012-03-11 22:02:42,903 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  jndi:SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote
2012-03-11 22:02:42,903 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner)  jndi:SE2/NewSessionBean/remote
2012-03-11 22:02:42,904 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (HDScanner) Added bean(jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3) to KernelDeployment of: SE2-ejb.jar
2012-03-11 22:02:42,980 INFO  [org.jboss.ejb3.session.SessionSpecContainer] (HDScanner) Starting jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:43,054 INFO  [org.jboss.ejb3.EJBContainer] (HDScanner) STARTED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:43,410 INFO  [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (HDScanner) Binding the following Entries in Global JNDI:

    SE2/NewSessionBean/remote - EJB3.x Default Remote Business Interface
    SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote - EJB3.x Remote Business Interface

2012-03-11 22:02:43,411 WARN  [org.jboss.ejb3.TimerServiceContainer] (HDScanner) EJBTHREE-2193: using deprecated TimerServiceFactory for restoring timers
2012-03-11 22:02:43,424 INFO  [org.jboss.jpa.deployment.PersistenceUnitDeployment] (HDScanner) Starting persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:43,454 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/SE2-war
2012-03-11 22:02:43,561 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (WorkerThread#0[127.0.0.1:3125]) undeploy, ctxPath=/SE2-war
2012-03-11 22:02:43,621 INFO  [org.jboss.jpa.deployment.PersistenceUnitDeployment] (WorkerThread#0[127.0.0.1:3125]) Stopping persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:43,629 INFO  [org.jboss.ejb3.session.SessionSpecContainer] (WorkerThread#0[127.0.0.1:3125]) Stopping jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:43,781 INFO  [org.jboss.ejb3.EJBContainer] (WorkerThread#0[127.0.0.1:3125]) STOPPED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:44,394 WARN  [org.jboss.ejb3.interceptor.InterceptorInfoRepository] (WorkerThread#0[127.0.0.1:3125]) EJBTHREE-1852: InterceptorInfoRepository is deprecated
2012-03-11 22:02:44,418 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) Created KernelDeployment for: SE2-ejb.jar
2012-03-11 22:02:44,425 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) installing bean: jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:44,426 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])   with dependencies:
2012-03-11 22:02:44,426 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])   and demands:
2012-03-11 22:02:44,426 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     jboss-switchboard:appName=SE2,module=SE2-ejb,name=NewSessionBean; Required: Create
2012-03-11 22:02:44,426 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     jboss.ejb:service=EJBTimerService; Required: Described
2012-03-11 22:02:44,427 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])   and supplies:
2012-03-11 22:02:44,427 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     Class:ejb.NewSessionBeanRemote
2012-03-11 22:02:44,427 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     jndi:NewSessionBean
2012-03-11 22:02:44,427 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     jndi:SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote
2012-03-11 22:02:44,427 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125])     jndi:SE2/NewSessionBean/remote
2012-03-11 22:02:44,428 INFO  [org.jboss.ejb3.deployers.JBossASKernel] (WorkerThread#0[127.0.0.1:3125]) Added bean(jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3) to KernelDeployment of: SE2-ejb.jar
2012-03-11 22:02:44,466 INFO  [org.jboss.ejb3.session.SessionSpecContainer] (WorkerThread#0[127.0.0.1:3125]) Starting jboss.j2ee:ear=SE2.ear,jar=SE2-ejb.jar,name=NewSessionBean,service=EJB3
2012-03-11 22:02:44,467 INFO  [org.jboss.ejb3.EJBContainer] (WorkerThread#0[127.0.0.1:3125]) STARTED EJB: ejb.NewSessionBean ejbName: NewSessionBean
2012-03-11 22:02:44,475 INFO  [org.jboss.ejb3.proxy.impl.jndiregistrar.JndiSessionRegistrarBase] (WorkerThread#0[127.0.0.1:3125]) Binding the following Entries in Global JNDI:

    SE2/NewSessionBean/remote - EJB3.x Default Remote Business Interface
    SE2/NewSessionBean/remote-ejb.NewSessionBeanRemote - EJB3.x Remote Business Interface

2012-03-11 22:02:44,477 WARN  [org.jboss.ejb3.TimerServiceContainer] (WorkerThread#0[127.0.0.1:3125]) EJBTHREE-2193: using deprecated TimerServiceFactory for restoring timers
2012-03-11 22:02:44,484 INFO  [org.jboss.jpa.deployment.PersistenceUnitDeployment] (WorkerThread#0[127.0.0.1:3125]) Starting persistence unit persistence.unit:unitName=SE2.ear/SE2-ejb.jar#wvp08heuPU
2012-03-11 22:02:44,529 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (WorkerThread#0[127.0.0.1:3125]) deploy, ctxPath=/SE2-war

Вот мое упорствоunit и его контекст:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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_2_0.xsd">
  <persistence-unit name="wvp08heuPU" transaction-type="JTA">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <jta-data-source>java:/MYSQL</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="toplink.ddl-generation" value="create-tables"/>
    </properties>
  </persistence-unit>
</persistence>

Вот моя проблема: при просмотре базы данных у меня нет постоянных сущностей - код ниже показывает мою сущность:

пакет сущностей;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.UniqueConstraint;

@Entity
@Table(name="Account", uniqueConstraints=@UniqueConstraint(columnNames="email"))
public class Account implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int account_id;

    private String email;
    private String name;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Calendar dateCreated;
    private int status;
    private String password;
    private String bio;
    private String profilePictureURL;

//getters and setters
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (int) account_id;
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Account)) {
            return false;
        }
        Account other = (Account) object;
        if (this.account_id != other.account_id) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entities.Account[ id=" + account_id + " ]";
    }

}

Есть идеи?

РЕДАКТИРОВАТЬ:

Мой сессионный компонент:

package ejb;

import entities.Account;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class NewSessionBean implements NewSessionBeanRemote {

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

    @Override
    public void AddAccount(Account a){
        em.persist(a);
    }
}

РЕШЕНИЕ:

ОСНОВНАЯ ВОПРОС БЫЛ ЭТО: Мой уровень персистентности былне удалось создать таблицы в базе данных, так как у них не было функциональности

Чтобы решить мою настоящую проблему, как отметил Оскар, я изменил свой поставщик сохраняемости на Hibernate 2.0 - это вместе с разнообразным списком измененийпозволил моему EJB работать.

Несколько проблем, которые у меня возникли, которые вы, возможно, также хотите решить:

  • ClassNotFound Exception - переместите ваши файлы .jar персистентности в каталог server / defaultваш сервер JBoss 6

  • Класс не может быть приведен - при использовании EclipseLink и JBoss 6 кажется, что есть некоторые проблемы с совместимостью, и я не могу заставить это работать;Я бы не стал пытаться.

  • MYSQL Not Found - убедитесь, что у вас есть только один драйвер коннектора mysql, который указан не только в вашей папке JBoss libs, но и в netbeans.Вы можете установить это по умолчанию, используя SET claspath, который Google скажет вам остальным.

1 Ответ

3 голосов
/ 12 марта 2012

А где звонок на entityManager.persist(account);?должен существовать бизнес-компонент, отвечающий за сохранение сущностей, будь то сеансовый EJB или POJO.

...