Giriş
MBean nesnelerine JMX üzerinden erişebiliriz. Ben Wildfly 25 ile ne local ne de remote JMX erişimini başaramadım. Sebebini de bilmiyorum
SAR Paketleme
Projenin SAR olarak paketlenmesi için şöyle yaparız
sourceSets {
main {
java {
srcDir 'src/main/java'
include '**/mypackage/service/*'
}
}
}
jar {
extension = "sar"
metaInf {
from('src/mypackage/service') {
include 'jboss-service.xml'
}
}
}
1. JBoss Bağımlı Yöntem
Eski yöntemde JBOSS arayüzleri kullanılıyor
Örnek
Şöyle yaparız
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();
}
Şöyle yaparız
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
@Override
public String getMessage() {
return message;
}
@Override
public void setMessage(String message) {
this.message = message;
}
// The printMessage operation
@Override
public void printMessage() {
log.info(message);
}
// The lifecycle
@Override
protected void startService() throws Exception {
log.info("Starting with message=" + message);
}
@Override
protected void stopService() throws Exception {
log.info("Stopping with message=" + message);
}
}
jboss-service.xml dosyasında şöyle yaparız
<?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>
Örnek
Şöyle yaparız. Burada MBean aynı zamanda JNDI sistemine de kaydediliyor
<server xmlns="urn:jboss:service:7.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
<mbean code="com.foo.MyController" name="MyApp:service=MyController">
<attribute name="JndiName">MyApp/MyControllerMBean</attribute>
</mbean>
</server>
Örnek
Şöyle yaparız
public class BatchController extends ServiceMBeanSupport
implements BatchControllerMBean, ITraceConstants {
private String jndiName;
//Called by Wildfly. jndiName is defined as "/BatchControllerMBean"
//in resources/META-INF/jboss-service.xml
public void setJndiName(String jndiName) throws NamingException {
this.jndiName = jndiName;
...
}
@Override
public void startService() throws Exception {
...
}
@Override
public void stopService() {
...
}
}
resources/META-INF/jboss-service.xml şöyledir
<server xmlns="urn:jboss:service:7.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:service:7.0 jboss-service_7_0.xsd">
<mbean
code="com.foo.BatchController"
name="Railway:service=BatchController">
<attribute name="JndiName">BatchControllerMBean</attribute>
</mbean>
</server>
2. JBoss Bağımsız Yöntem
Bu yöntemde org.jboss.system.ServiceMBeanSupport ve org.jboss.system.ServiceMBean sınıflarından kalıtım gerekmiyor. Sadece arayüzümüze start() ve stop() metodları ekleriz
Örnek
Şöyle yaparız
public interface HelloWorldServiceMBean { // Configure getters and setters for the message attribute String getMessage(); void setMessage(String message); // The print message operation void printMessage(); // Lifecycle callbacks void start() throws Exception; void stop(); }
Hiç yorum yok:
Yorum Gönder