Newsgroup: it.comp.java
Titolo: J2EE Mysql e netbeans

Ciao, sto cercando di accedere ad un db mysql dalla mia applicazione
j2ee sviluppata sotto netbeans.
Non riesco a capire come cavolo fare a collegare il
tutto...praticamente nel runtime di netbeans riesco a collegarmi al
db, quindi non ci dovrebbero essere problemi con mysql.
Nel mio progetto dopo aver aggiunto la lib mysql...jar all'ejb ho
creato una nuova "entity class from database" qui creo la persistence
unit che dopo vi posto e creo l'entity file...
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd
">
  <persistence-unit name="mysqlpersistenceunit" transaction-
type="JTA">
    <jta-data-source>jdbc/testmysql</jta-data-source>
    <properties/>
  </persistence-unit>
</persistence>
jboss-ds.xml:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>testmysql</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>sysadmin</user-name>
    <password>******</password>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <idle-timeout-minutes>5</idle-timeout-minutes>
  </local-tx-datasource>
</datasources>
Per il momento questo è il male minore, ovvero non ottengo la lista
delle entry lato web ed ottengo "solo" questo messaggio in fase di
deploy:
--- MBeans waiting for other MBeans ---
ObjectName: persistence.units:ear=MyTest.ear,jar=MyTest-
ejb.jar,unitName=mysqlDS
  State: NOTYETINSTALLED
  I Depend On:
    jboss.jca:name=jdbc/mysqlDS,service=ManagedConnectionFactory
ObjectName: persistence.units:ear=MyTest.ear,jar=MyTest-
ejb.jar,unitName=mysqlpersistenceunit
  State: NOTYETINSTALLED
  I Depend On:
    jboss.jca:name=jdbc/testmysql,service=ManagedConnectionFactory
  Depends On Me:
    jboss.j2ee:ear=MyTest.ear,jar=MyTest-
ejb.jar,name=DipendentiManagerBean,service=EJB3
ObjectName: jboss.j2ee:ear=MyTest.ear,jar=MyTest-
ejb.jar,name=DipendentiManagerBean,service=EJB3
  State: NOTYETINSTALLED
  I Depend On:
    persistence.units:ear=MyTest.ear,jar=MyTest-
ejb.jar,unitName=mysqlpersistenceunit
--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.jca:name=jdbc/
testmysql,service=ManagedConnectionFactory
  State: NOTYETINSTALLED
  Depends On Me:
    persistence.units:ear=MyTest.ear,jar=MyTest-
ejb.jar,unitName=mysqlpersistenceunit
ObjectName: jboss.jca:name=jdbc/
mysqlDS,service=ManagedConnectionFactory
  State: NOTYETINSTALLED
  Depends On Me:
    persistence.units:ear=MyTest.ear,jar=MyTest-
ejb.jar,unitName=mysqlDS
Ottengo errori diversi andando a modificare la seguente riga nel
persistence.xml:
<jta-data-source>jdbc/testmysql</jta-data-source>
nel seguente modo:
<jta-data-source>testmysql</jta-data-source>  (quello originale creato
dal wizard di netbeans)
oppure
<jta-data-source>java:/testmysql</jta-data-source>
Innanzitutto mi farebbe comodo capire quale di queste tre alternative
è corretta...
Poi...qualcuno ha qualche idea su come far andare il tutto? Grazie
PS: Ho fatto un ulteriore prova:
Ho eliminato il file "jboss-ds.xml" dalla directory di deploy del
server. poi ho usato la terza alternativa, ovvero:
<jta-data-source>java:/testmysql</jta-data-source>
In questo modo non ottengo nessun errore in fase di deploy ma continuo
a non vedere nessuna voce lato web...però in questo caso potrebbe
essere un problema di comunicazione tra il war ed il ejb...

 xsi:schemaLocation="
http://java.sun.com/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
">

Sto diventando scemo...dopo 2 giorni che leggo i log di Jboss mi sa
che è giunto il momento di staccare! :)
Cmq lascio una traccia nel caso un'anima pia passi il week-end e trovi
il mio errore!
Sono riuscito a capire che non è un problema tra l'ejb e il war,
infatti se nel mio session bean metto qualcosa del genere:
    @DataModel
    private List<Dipendenti> dipendentiList;
    @Factory("dipendentiList")
public void findDipendenti() {
       dipendentiList = new ArrayList<Dipendenti>();
       dipendentiList.add(new
Dipendenti("cuhdcuduchduhdc","Paolo","Rossi",(short)40,new
java.util.Date(2005,12,21),"Roma","Roma"));
       dipendentiList.add(new
Dipendenti("hgsahsgahysgahs","Andrea","Verdi",(short)30,new
java.util.Date(2005,12,21),"Roma","Roma"));
}
Lato web vedo le due voci, mentre se cerco di caricare dal db :
@Factory("dipendentiList")
    public void findDipendenti() {
        dipendentiList = em.createQuery("select dip from
Dipendenti").getResultList();
    }
ottengo un errore del tipo che non riesce a trovare la variabile
"dipendentiList"...quindi deve per forza essere un problema di
configurazione di hibernate.
Tutto questo utilizzando <jta-data-source>java:/testmysql</jta-data-
source>  nel file di persistenza...
Evito di postare tutto il codice ... però se vi serve qualcosa per
capire, non ci sono problemi! :) Basta un fischio!