{"id":46,"date":"2007-02-09T12:13:00","date_gmt":"2007-02-09T12:13:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=46"},"modified":"2007-02-09T12:13:00","modified_gmt":"2007-02-09T12:13:00","slug":"service-ejbs-bei-jboss-ejb-3-1-ruft","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2007\/02\/service-ejbs-bei-jboss-ejb-3-1-ruft\/","title":{"rendered":"@Service-EJBs bei JBoss &#8212; EJB 3.1 ruft"},"content":{"rendered":"<\/p>\n<p>Bei JBoss ist eine Service-Bean eine besondere EJB, wovon es serverseitig nur ein Exemplar gibt.<br \/>Unterschiedliche Clients werden immer mit dem gleichen Exemplar arbeiten.<br \/>Es ist ein Singleton, ein nicht gepooltes Objekt.<br \/>Eine Service-Bean wird mit @org.jboss.annotation.ejb.Service annotiert.<\/p>\n<p>@Service<br \/>public class VitalityCheckBean implements\u2026<\/p>\n<p>\u00dcber @Remote und\/oder @Local w\u00e4re sich auch ganz normal von au\u00dfen zug\u00e4nglich. <\/p>\n<p>Interessant sind Service-Bean, weil sie an einem MBean-Server angemeldet werden k\u00f6nnen und so \u00fcber JMX zug\u00e4nglich sind.<br \/>Dazu muss die EJB<br \/>mit @Service annotiert werden,<br \/>ein Management-Interface f\u00fcr die JMX-Operationen implementieren und<br \/>mit der Annotation @org.jboss.annotation.ejb.Management das Management-Interface benennen.<br \/>Das Management-Interface ist eine ganz normale Java-Schnittstelle und muss keiner Namenskonvention folgen.<br \/>Alle dort genannten Methoden sind \u00fcber eine JMX-Konsole sichtbar. <\/p>\n<p>interface MyManagementInterface<br \/>{<br \/>void doIt();<br \/>String getValue();<br \/>void setValue( String string );<br \/>} <\/p>\n<p>import org.jboss.annotation.ejb.*; <\/p>\n<p>@Service<br \/>@Management( MyManagementInterface.class )<br \/>public class SimpleServiceBean implements MyManagementInterface<br \/>{<br \/>private String string = &#8222;(default)&#8220;  <\/p>\n<p>public void doIt() {<br \/>System.out.println( &#8222;Ausgabe&#8220; );<br \/>}  <\/p>\n<p>public void setValue( String string ) {<br \/>this.string = string;<br \/>}  <\/p>\n<p>public String getValue() {<br \/>return string;<br \/>}<br \/>} <\/p>\n<p>In der JMX-Konsole unter <a href=\"http:\/\/localhost:8080\/jmx-console\/\">http:\/\/localhost:8080\/jmx-console\/<\/a> suchen nach SimpleServiceBean mit ManagementInterface. <\/p>\n<p>Der JMX-ObjectName l\u00e4sst sich \u00fcber das Attribut objectName der Annotation @Service \u00e4ndern:<br \/>@Service(objectName=&#8220;javatutor:service=SimpleServiceBean&#8220;)<br \/>@Management(MyManagementInterface.class)<br \/>public class SimpleServiceBean implements &#8230;  <\/p>\n<p>Weiteres, auch zum Lebenszkylus unter  <\/p>\n<ul>\n<li><a href=\"http:\/\/trailblazer.demo.jboss.com\/EJB3Trail\/serviceobjects\/jmx\/index.html\">http:\/\/trailblazer.demo.jboss.com\/EJB3Trail\/serviceobjects\/jmx\/index.html<\/a><\/li>\n<li><a href=\"http:\/\/docs.jboss.org\/ejb3\/app-server\/reference\/build\/reference\/en\/html\/jboss_extensions.html\">http:\/\/docs.jboss.org\/ejb3\/app-server\/reference\/build\/reference\/en\/html\/jboss_extensions.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>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. @Servicepublic class VitalityCheckBean implements\u2026 \u00dcber @Remote und\/oder @Local w\u00e4re sich auch ganz normal von au\u00dfen zug\u00e4nglich. Interessant sind Service-Bean, weil [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[9],"tags":[],"class_list":["post-46","post","type-post","status-publish","format-standard","hentry","category-java-ee"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/46\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=46"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=46"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}