@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 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