Jboss + Spring + Mbeans 1/3

Hace poco me encomendaron la desconocida tarea de registrar desde una aplicación stand alone con Spring un MBean en un servidor JBoss. Me costó mucho al principio enteder, lo primero que logré fue declarar un servicio en JBoss desde un archivo .SAR. No me acuerdo mucho del asunto, es algo así:

http://forum.springframework.org/showthread.php?t=11479

Se define una carpeta META-INF en un Proyecto Java, y adentro se le pone un jboss-service.xml, se lo exporta como .jar, y le cambiás la extensión a .SAR, y JBoss te lo toma como servicio.

Acá está el ejemplo:

META-INF/jboss-service.xml:

<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="com.acme.HelloWorldService" name="acme.com:service=HelloWorld">
<attribute name="Message">Hello World</attribute>
</mbean>
</server>com.acme.HelloWorldServiceMBean


com.acme.HelloWorldService

package com.acme; import org.jboss.system.ServiceMBeanSupport;public class HelloWorldService extends ServiceMBeanSupport implements HelloWorldServiceMBean
{
// Our message attribute
private String message = "Sorry no message today";// Getters and Setters
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}// The printMessage operation
public void printMessage()
{
log.info(message);
}// The lifecycle
protected void startService() throws Exception
{
log.info("Starting with message=" + message);
}
protected void stopService() throws Exception
{
log.info("Stopping with message=" + message);
}
}

com.acme.HelloWorldServiceMBean:

package com.acme;import org.jboss.system.ServiceMBean;public interface HelloWorldServiceMBean extends ServiceMBean
{
// Configure getters and setters for the message attribute
String getMessage();
void setMessage(String message);// The print message operation
void printMessage();
}Si esto les funciona, ya están listos para la siguiente y terrorífica etapa... obtener la info de un MBean del servidor!  

Dejar un comentario

Misterioso archivo .SAR

Un archivo SAR es un archivo de servicio de JBoss. Si quieren probar cómo se muestra un MBean en la consola de JBoss, es decir, instanciar un nuevo servicio, deben:

Crear un nuevo proyecto web dinámico en Eclipse

Hacer este tutorial.

Crear una carpeta META-INF y ahí poner el archivo jboss-services.xml

Exportar el archivo como .JAR

Cambiarle la extensión a .SAR, y pegarlo en la carpeta deploy, del servidor default (o e que usen) de JBoss x)

En definitiva, la diferencia entre un JAR y un SAR es el nombre, y que este último tiene en META-INF la descripción del servicio.

Dejar un comentario

clases subidas :D

(package gaia.core)

//Interfase pilar
public interface Pilar {
//Realiza lo que tiene que hacer en cada turno
public function do:Void;
//Devuelve la instancia del pilar, ya que por definición, todo los pilares son singletons
public function getInstance():Pilar;
}

//Clase Game, controladora
public class Game {
private var pilares:List<Pilares>;
private var main:MovieClip;

public function getMain():MovieClip {
return this.main;
}

//Constructor
public function Game(main:MovieClip) {
this.main=main;
pilares=new List<Pilares>(); //Array o collection, ver acá qué conviene implementar
init();

//Acá añade el action listener o la detección de eventos,p ara que haga do() cada vez que entra en un frame
bla :P
}
//Inicia todos los pilares
private function init():Void {
var maps:Maps=new Maps();
var creatureLord:CreatureLord=new CreatureLord();
var hero:Hero=new Hero();
var config:Config=new Config();

//Acá añade todos al array
}
public funcition do():Void {
foreach (Pilar pilar in pilares) {
pilar.do();
}
//Probamos si funciona
trace (“Game.do()”);
}
}

//Crear una clase que se llame Collection o List, que tenga adentro una array y un iterator (crear también el iterator)

//Contiene todo lo referente al héroe
public class Hero {
private var mc:MovieClip;

public function Hero() {
mc=new HeroMc();
}
}

<<Package gaia.maps>>

//Clase room
public interfase IRoom {
//Tira true si el héroe está tocando un portal, en cuyo caso
//debería cambiar de habitación (la clase Map itera todo el tiempo para ver si tiene que camibiar de portal)
public function isOnPortal:Boolean;
public function getActivePortal():IPortal;
}

//Clase portal, se aplica a cualquier cosa que lleve de una habitación a otra
public interface IPortal {
public function getNextRoomName():String;
}

public class Portal implements IPortal {
private var nextRoomName:String;
private var mc:MovieClip;

public function Portal(nextRoomName:String, mc:MovieClip) {
this.nextRoomName=nextRoomName;
this.mc=new MovieClip(); //La habitación le pasa como parámetro un mc ya dibujado, que ya tiene
(sino lo tiene, entonces hacer un switch)
}
}

//Interfaz criatura
public interfase ICriatura {
public function daniar(criatura:ICriatura):Void;

}

Dejar un comentario

ActionScript 3.0: enormes cambios

Flash

Hace mucho que no programaba en Flash, y me dieron ganas de hacer un juego de rol. Me di cuenta de lo mucho que había cambiado este lenguaje. AS3 es mucho mas robusto e inflexible que sus entregas anteriores, y tienen muchas diferencias.

Las mas importantes:

Totalmente orientado a objetos

Las clases son privadas por defecto! Por eso puede no encontrarlas generalmente.
Existen los paquetes (son la ruta de carpetas en donde estan guardadas).
No existe _root.

Los movieClip no tienen mas enterFrame, onClick, etc. Ahora son todos eventos.

No hay mas attachMovie: http://www.codigo.as/blog/?p=76

Dejar un comentario

Java vs C# (Constructor)

Hola! Bienvenidos a este blog, en donde, paradójicamente, no pondré estúpidos artículos comparando las características de Java y las de C#, sino que pondré artículos de cosas que estoy descubriendo yo y que podrían llegar a serle útil a alguien (y a mi para acordarme)

Dejar un comentario

« Entradas más recientes