Archiv der Kategorie: Java EE

@Service-EJBs bei JBoss — EJB 3.1 ruft

Bei JBoss ist eine Service-Bean eine besondere EJB, wovon es serverseitig nur ein Exemplar gibt.
Unterschiedliche Clients werden immer mit dem gleichen Exemplar arbeiten.
Es ist ein Singleton, ein nicht gepooltes Objekt.
Eine Service-Bean wird mit @org.jboss.annotation.ejb.Service annotiert.

@Service
public class VitalityCheckBean implements…

Über @Remote und/oder @Local wäre sich auch ganz normal von außen zugänglich.

Interessant sind Service-Bean, weil sie an einem MBean-Server angemeldet werden können und so über JMX zugänglich sind.
Dazu muss die EJB
mit @Service annotiert werden,
ein Management-Interface für die JMX-Operationen implementieren und
mit der Annotation @org.jboss.annotation.ejb.Management das Management-Interface benennen.
Das Management-Interface ist eine ganz normale Java-Schnittstelle und muss keiner Namenskonvention folgen.
Alle dort genannten Methoden sind über eine JMX-Konsole sichtbar.

interface MyManagementInterface
{
void doIt();
String getValue();
void setValue( String string );
}

import org.jboss.annotation.ejb.*;

@Service
@Management( MyManagementInterface.class )
public class SimpleServiceBean implements MyManagementInterface
{
private String string = „(default)“

public void doIt() {
System.out.println( „Ausgabe“ );
}

public void setValue( String string ) {
this.string = string;
}

public String getValue() {
return string;
}
}

In der JMX-Konsole unter http://localhost:8080/jmx-console/ suchen nach SimpleServiceBean mit ManagementInterface.

Der JMX-ObjectName lässt sich über das Attribut objectName der Annotation @Service ändern:
@Service(objectName=“javatutor:service=SimpleServiceBean“)
@Management(MyManagementInterface.class)
public class SimpleServiceBean implements …

Weiteres, auch zum Lebenszkylus unter