Newsgroup: it.comp.java
Titolo: EJB3 ENTYTY con Eclipse Galielo

Ciao a tutti!
Ho realizzato i mei primi ejb3 session stateless e non ho avuto
problemi durante il deployment su jboss 4.2.3 e su jboss 5.
Adesso sto provando, aimhè senza successo, a realizzare i miei primi
entity EJB3.
Vi dico quello che ho fatto e i problemi incontrati:
1. ho creato un nuovo progetto EJB con  Eclipse Galielo e ho la
seguente struttura:
MyEJBJboss423_3
--> DeploymentDescriptor
--> ejbModule
     -->ejb3inaction.example.buslogic
         -->PlaceBid.java
         -->PlaceBidBean.java
     -->ejb3inaction.example.persistence
         -->Bid.java
     -->META-INF
         --> persistence.xml
--> JavaScriptResources
--> JRE SystemLibrary [jdk1.6.0_19]
--> Jboss v 4.2 [JBoss 4.2.3]
--> EAR libraries
--> Build
Ho anche creato, su db MySql un db che si chiama dbprova ed una
tabella che ho chiamato "bids" con i seguenti campi:
bidID, itemID, bidderID, bidAmount, bidDate.
Il contenuto dei file che vedete nella struttura sopra è il seguente:
1. La classe che vorrei rendere persistente:
package ejb3inaction.example.persistence;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import 
javax.persistence.Id
;
import javax.persistence.Table;
@Entity
@Table(name="BIDS")
public class Bid implements Serializable {
	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	private Long bidID;
	private Long itemID;
	private Long bidderID;
	private Double bidAmount;
	private String bidDate;
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="bidID")
	public Long getBidID() {
		return bidID;
	}
	public void setBidID(Long bidID) {
		this.bidID = bidID;
	}
	@Column(name="itemID")
	public Long getItemID() {
		return itemID;
	}
	public void setItemID(Long itemID) {
		this.itemID = itemID;
	}
	@Column(name="bidderID")
	public Long getBidderID() {
		return bidderID;
	}
	public void setBidderID(Long bidderID) {
		this.bidderID = bidderID;
	}
	@Column(name="bidAmount")
	public Double getBidAmount() {
		return bidAmount;
	}
	public void setBidAmount(Double bidAmount) {
		this.bidAmount = bidAmount;
	}
	@Column(name="bidDate")
	public String getBidDate() {
		return bidDate;
	}
	public void setBidDate(String bidDate) {
		this.bidDate = bidDate;
	}
}
2. Il Bean (interfaccia):
package ejb3inaction.example.buslogic;
import javax.ejb.Local;
import ejb3inaction.example.persistence.Bid;
@Local
public interface PlaceBid {
	Bid addBid(Bid bid);
}
3. Il bean vero e proprio:
package ejb3inaction.example.buslogic;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import ejb3inaction.example.persistence.Bid;
@Stateless(name = "MioPlaceBid")
public class PlaceBidBean implements PlaceBid {
	@PersistenceContext(unitName = "dbprova")
	private EntityManager em;
	public PlaceBidBean() {
    }
	public Bid addBid(Bid bid) {
        return save(bid);
    }
	private Bid save(Bid bid) {
        em.persist(bid);
        return bid;
    }
}
ed infine, il file persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence-unit name="dbprova">
 	<provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/MySqlDS</jta-data-source>
      <properties>
         property name="hibernate.dialect"
                  value="org.hibernate.dialect.HSQLDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      </properties>
</persistence-unit>
...ed il file ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0" 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
">
  <display-name> MyEJBJboss423_3 </display-name>
</ejb-jar>
***************************************************************************************
Questo è tutto quello che ho,
Nel momento di deployment, l'errore che ottengo è il seguente:
23:22:14,880 ERROR [URLDeploymentScanner] Incomplete Deployment
listing:
--- MBeans waiting for other MBeans ---
ObjectName:
jboss.j2ee:jar=MyEJBJboss423_3.jar,name=MioPlaceBid,service=EJB3
  State: NOTYETINSTALLED
  I Depend On:
    persistence.units:unitName=dbprova
--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: persistence.units:unitName=dbprova
  State: NOTYETINSTALLED
  Depends On Me:
    jboss.j2ee:jar=MyEJBJboss423_3.jar,name=MioPlaceBid,service=EJB3
****************************************************************************************************
Dov'è che sbaglio?
Manca qualche altro file?
E' incompleto o ci sono errori nel file persistence.xml?
:°°°°°°
Aiutatemi! Ho seguito quanto scritto nelle prime 100 pagine di Ejb in
Action, ma qui, l'unica cosa che è "in action" sono le mie fesserie! :°
°°
Ciao,
Luca Paolucci

 problemi durante il deployment su jboss 4.2.3 e su jboss 5.
[...]
Grazie lo stesso, ho risolto nel modo seguente:
1. utilizzanto, la prima volta, il database DefaultDS con relative
impostazioni nel file persistence.xml dell'applicazione.
2. per lavorare con MySql sono andato a pescare il file mysql-ds.xml
all'interno della cartella C:\
jboss-4.2.3.GA
\docs\examples\jca, l'ho
copiato e spostato nella cartella C:\
jboss-4.2.3.GA
\server\default
\deploy. L'ho così configurato secondo le mie esigenze e adesso lavoro
con il mio dbprova con le tabelle che dico io.
Ho fatto bene? (sempre secondo il discorso di Rootkit che giustamente
dice di NON toccare l'application server?)
Rootkit AIUTOOOO!!!! :°
Eh Rootkit? Ho fatto bene a crearmi il file mysql-ds con
l'impostazione del mio dbprova, la password, la porta di connessione
etc etc? Perchè ora funge! Però non so' se ho fatto quello che
dovevo... a me piacerebbe tanto fare tutto dall'applicazione senza
toccare il server!
Mah... Boh! Vabbè io continuo a studiare, se vi va battete un colpo!
Ciao! :)
Luca