EJB + JBoss AS
Proyecto Eclipse Configuración
Primero tener en el build path la librería de tiempo de ejecución del JBoss.
Localizaciones a recordar:
JBoss : Para que arranquen las aplicaciones debemos tener presente: JBoss/server/default/deploy/* (con extensiones como .ear, .war o .jar)
TomCat : Tomcat/webapps/*.jar
Practicar la creación de un proyecto EJB:
- Nuevo proyecto maven
- Crear un simple proyect
- Group Id: nombre del paquete
Artifac id: nombre del jar - Build Path, añadir libreria, server runtime, JBoss
- Crear un paquete es.cea y dentro una interfaz: ServicioCalculadoraRemote
- Añadir una anotación "@Remote" encima del nombre de la intefaz y crear un método "suma"
- Crear una clase ServicioCalculadora que implemente ServicioCalculadoraRemote e implemente el método "suma" y añadir en la cabecera de la clase la etiqueta de sin estado "@Stateless"
- Botón secundario encima del proyecto, Export y marcamos el paquete es.cea que están nuestras dos clases.
La librería se colocará en "..\servers\jboss-5.0.1.GA\server\default\deploy\" y le ponemos de nombre "calculadora.jar" - También tenemos otro modo de hacer lo mismo y es botón secundario encima del proyecto, Run As.. y marcamos "Maven Package" y la librería que nos crea lo copiamos en la misma ruta antes dicha.
- Si queremos acceder desde una clase java
- Copiamos del proyecto de ayer la clase "PrimerBeanClient" y lo modificamos. Recordemos que llamamos a las interfaces, no a las clases.
- El main debe quedar tal que así:
try {
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
Context ctx = new InitialContext(p);
Object ref = ctx.lookup("ServicioCalculadora/remote");
ServicioCalculadoraRemote servCalc = (ServicioCalculadoraRemote) PortableRemoteObject
.narrow(ref, ServicioCalculadoraRemote.class);
System.out.println("1 + 2 = " + servCalc.suma(1, 2));
} catch (NamingException e) {
e.printStackTrace();
}
Ejercicio:
Pequeño manual de enviar un mensaje de correo usando gmail: Manual
Teniendo este código: Java Mail
Tenemos que hacer un EJB de servicio de mail usando nuestra cuenta de GMail.
- Primero creamos un proyecto, lo llamaremos servicioMail
- Configuramos el "build Path" y añadimos una librería nueva de tipo "Server runtime" y seleccionamos el JBoss
- Creamos una interfaz "ServicioMailRemote" y su clase implementación "ServicioMail" en el paquete "es.cea"
- En la interfaz añadimos la anotación @Remote y creamos la cabecera del método de enviar el Email.
- En la clase implementación ("ServicioMail") añadimos la anotación @Stateless e implementamos el método según el enlace que puse antes pero cambiando algunas cosas:
- Cambiar: props.setProperty("mail.smtp.port","465");
Añadir: props.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory"); - El código completo sería:
// Propiedades de la conexión
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.user", origen);
props.setProperty("mail.smtp.auth", "true");
// Preparamos la sesion
Session session = Session.getDefaultInstance(props);
// Construimos el mensaje
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(origen));
message.addRecipient(
Message.RecipientType.TO,
new InternetAddress(destinatario));
message.setSubject(asunto);
message.setText(mensaje);
// Lo enviamos.
Transport t = session.getTransport("smtp");
t.connect(origen, password);
t.sendMessage(message, message.getAllRecipients());
// Cierre.
t.close(); - Despues de esto exportamos el paquete al JBoss como explicamos antes.
- Run As.. Java Application y listo
Ejercicio expandido (opcional):
Usando el mismo ejercicio usar el ANT para automatizar copiar el jar a la carpeta de destino del servidor y otra tarea de borrar para "desinstalar" la aplicación.
JSF
Java Server Faces
Es una herramienta de modelo vista controlador (MVC)
Más información AQUÍ
Abrimos el proyecto "jsf1" que sólo arrancará desde el jetty y desde la línea de comandos (mvn jetty:run)
Vamos al localhost/jsf1/ y ahí lo veremos.
El proyecto consiste en que hay unas clases bean (Modelo), un xhtml y unos archivos de configuración.
Un xhtml (Vista) tiene un formulario, cuyo botón de submit se envía a una clase de acción que controlará (controlador) el formulario. Un archivo xml enlazará todo y si recibe de los controladores el "success" mostrará los xhtml de respuesta.
Consejo:
Toda página que hagamos tiene que ser xhtml y no html
No hay comentarios:
Publicar un comentario