Création d'EJB avec NetBeans
Ce document présente
un exemple d'EJB qui marche sous NetBeans + JBoss. c'est un bean
calculatrice qui se limite à faire une addition de float.
Code source de l'EJB
Dans un projet EJB "classique"
Interface Remote (je n'ai créé que celle-là) : AddRemote
package calc;
import javax.ejb.Remote;
/**
*
* @author Lionel Médini
*/
@Remote
public interface AddRemote {
public float add(float a, float b);
}
Classe d'implémentation : AddBean
package calc;
import javax.ejb.Stateless;
/**
*
* @author Lionel Médini
*/
@Stateless
public class AddBean implements AddRemote {
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method" or "Web Service > Add Operation")
public float add(float a, float b) {
return a+b;
}
}
Code source du client (simple)
Cette
classe est une classe qui fait l'addition 3+3 en appelant le bean
par son interface remote. Le fichier jndi.properties est
référencé en dur, pour l'exemple.
package test_ee1;
import calc.AddRemote;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
*
* @author Lionel Médini
*/
public class Main {
static AddRemote add;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
float a = 3, b = 3;
//Utilisation du bean
add = Main.lookupAddBean();
System.out.println("3 + 3 = " + add.add(a, b));
}
public static AddRemote lookupAddBean() {
Properties props = new Properties();
try {
//Chargement du fichier jndi.properties
props.load(new
FileInputStream("E:\\mes_dossiers\\jndi.properties"));
//Récupération du serveur JNDI
} catch (IOException e) {
e.printStackTrace();
}
try {
Context c = new InitialContext(props);
//Récupération de la référence sur une
instance du bean
//Remaque :
//contrairement à ce qui est indiqué dans le code
généré automatiquement,
//il faut faire une référence vers le nom du bean/remote
return (AddRemote) c.lookup("AddBean/remote");
} catch (NamingException ne) {
Logger.getLogger(ne.getClass().getName()).log(Level.SEVERE, "exception
caught", ne);
throw new RuntimeException(ne);
}
}
}