-->\n\u003C/bean>\n \u003C!-- you may just copy the following lines -->\n\u003Cbean id=\"exporter\" class=\"org.springframework.jmx.export.MBeanExporter\" lazy-init=\"false\">\n\u003Cproperty name=\"autodetect\" value=\"true\"/>\n\u003Cproperty name=\"namingStrategy\" ref=\"namingStrategy\"/>\n\u003Cproperty name=\"assembler\" ref=\"assembler\"/>\n\u003C/bean>\n\u003Cbean id=\"jmxAttributeSource\" class=\"org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource\"/>\n\u003Cbean id=\"assembler\" class=\"org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler\">\n\u003Cproperty name=\"attributeSource\" ref=\"jmxAttributeSource\"/>\n\u003C/bean>\n\u003Cbean id=\"namingStrategy\" class=\"org.springframework.jmx.export.naming.MetadataNamingStrategy\">\n\u003Cproperty name=\"attributeSource\" ref=\"jmxAttributeSource\"/>\n\u003C/bean>\n","xml",[45,153,154,160,165,170,175,180,185,190,195,200,205,209,214,219,224,228,234,239],{"__ignoreMap":43},[48,155,156],{"class":50,"line":51},[48,157,159],{"emptyLinePlaceholder":158},true,"\n",[48,161,162],{"class":50,"line":57},[48,163,164],{},"\u003Cbean id=\"jmxDemo\" class=\"org.synyx.urlaubsverwaltung.jmx.JmxDemo\">\n",[48,166,167],{"class":50,"line":63},[48,168,169],{}," \u003C!-- maybe you need contructor-injection -->\n",[48,171,172],{"class":50,"line":69},[48,173,174],{}," \u003C!-- \u003Cconstructor-arg ref=\"myService\" /> -->\n",[48,176,177],{"class":50,"line":75},[48,178,179],{},"\u003C/bean>\n",[48,181,182],{"class":50,"line":81},[48,183,184],{}," \u003C!-- you may just copy the following lines -->\n",[48,186,187],{"class":50,"line":87},[48,188,189],{},"\u003Cbean id=\"exporter\" class=\"org.springframework.jmx.export.MBeanExporter\" lazy-init=\"false\">\n",[48,191,192],{"class":50,"line":93},[48,193,194],{},"\u003Cproperty name=\"autodetect\" value=\"true\"/>\n",[48,196,197],{"class":50,"line":98},[48,198,199],{},"\u003Cproperty name=\"namingStrategy\" ref=\"namingStrategy\"/>\n",[48,201,202],{"class":50,"line":104},[48,203,204],{},"\u003Cproperty name=\"assembler\" ref=\"assembler\"/>\n",[48,206,207],{"class":50,"line":110},[48,208,179],{},[48,210,211],{"class":50,"line":115},[48,212,213],{},"\u003Cbean id=\"jmxAttributeSource\" class=\"org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource\"/>\n",[48,215,216],{"class":50,"line":121},[48,217,218],{},"\u003Cbean id=\"assembler\" class=\"org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler\">\n",[48,220,221],{"class":50,"line":127},[48,222,223],{},"\u003Cproperty name=\"attributeSource\" ref=\"jmxAttributeSource\"/>\n",[48,225,226],{"class":50,"line":132},[48,227,179],{},[48,229,231],{"class":50,"line":230},16,[48,232,233],{},"\u003Cbean id=\"namingStrategy\" class=\"org.springframework.jmx.export.naming.MetadataNamingStrategy\">\n",[48,235,237],{"class":50,"line":236},17,[48,238,223],{},[48,240,242],{"class":50,"line":241},18,[48,243,179],{},[18,245,246],{},"If your application is running inside a container such as Tomcat, you even don’t have to configure the MBeanServer\nbecause the container has its own one.",[18,248,249,250,253],{},"Setting MBeanExporter’s property ",[25,251,252],{},"autodetect"," to true, means that the MBeanExporter will register all the Beans within\nyour application’s context that are annotated in the way described in the next section as MBeans.",[140,255,257],{"id":256},"_2-lets-transform-your-spring-bean-to-a-managed-bean","2. Let’s transform your Spring Bean to a Managed Bean!",[18,259,260,261,264,265,268,269,272],{},"Spring uses information provided by annotations to generate MBeans. The attributes of the annotations are speaking for\nthemselves so further description isn’t necessary. To mark a Bean for export, it has to be annotated with\n",[25,262,263],{},"@ManagedResource",", Attributes are annotated with ",[25,266,267],{},"@ManagedAttribute"," and Methods with ",[25,270,271],{},"@ManagedOperation",".",[18,274,275],{},[276,277,278],"strong",{},"2.1 Bean",[18,280,281,282,272],{},"Mark your Bean with ",[25,283,263],{},[38,285,287],{"className":40,"code":286,"language":42,"meta":43,"style":43},"@ManagedResource(objectName = \"mbeans:name=myJmxDemoBean\", description = \"My managed Bean.\")\npublic class JmxDemo {\n // lot of stuff\n}\n",[45,288,289,294,298,303],{"__ignoreMap":43},[48,290,291],{"class":50,"line":51},[48,292,293],{},"@ManagedResource(objectName = \"mbeans:name=myJmxDemoBean\", description = \"My managed Bean.\")\n",[48,295,296],{"class":50,"line":57},[48,297,54],{},[48,299,300],{"class":50,"line":63},[48,301,302],{}," // lot of stuff\n",[48,304,305],{"class":50,"line":69},[48,306,135],{},[18,308,309],{},"Make sure that your MBean doesn’t contain ‘MBean’ in its name since it would be treated as a StandardMBean causing your\nannotations not to work.",[18,311,312],{},[276,313,314],{},"2.2 Attributes",[18,316,317,318,272],{},"Annotate the Getter and Setter with ",[25,319,267],{},[38,321,323],{"className":40,"code":322,"language":42,"meta":43,"style":43},"@ManagedAttribute(description = \"Get the number of all waiting applications\" )\npublic long getNumberOfWaitingApplications() {\n return numberOfWaitingApplications;\n}\n",[45,324,325,330,335,340],{"__ignoreMap":43},[48,326,327],{"class":50,"line":51},[48,328,329],{},"@ManagedAttribute(description = \"Get the number of all waiting applications\" )\n",[48,331,332],{"class":50,"line":57},[48,333,334],{},"public long getNumberOfWaitingApplications() {\n",[48,336,337],{"class":50,"line":63},[48,338,339],{}," return numberOfWaitingApplications;\n",[48,341,342],{"class":50,"line":69},[48,343,135],{},[18,345,346],{},"Exposing attributes may be:",[348,349,350,354,357,360,363,366,369],"ul",{},[351,352,353],"li",{},"Basic types",[351,355,356],{},"Primitives and their wrappers",[351,358,359],{},"String",[351,361,362],{},"BigDecimal",[351,364,365],{},"BigInteger",[351,367,368],{},"Date",[351,370,371],{},"Arrays and collections of basic types",[18,373,374],{},[276,375,376],{},"2.2 Methods",[18,378,379,380,272],{},"Annotate each method you wish to expose with ",[25,381,271],{},[38,383,385],{"className":40,"code":384,"language":42,"meta":43,"style":43},"@ManagedOperation(description = \"Shows a list of all waiting applications with some information.\")\npublic List\u003CString> showWaitingApplications() {\n // do something and return a list of all waiting applications\n}\n",[45,386,387,392,397,402],{"__ignoreMap":43},[48,388,389],{"class":50,"line":51},[48,390,391],{},"@ManagedOperation(description = \"Shows a list of all waiting applications with some information.\")\n",[48,393,394],{"class":50,"line":57},[48,395,396],{},"public List\u003CString> showWaitingApplications() {\n",[48,398,399],{"class":50,"line":63},[48,400,401],{}," // do something and return a list of all waiting applications\n",[48,403,404],{"class":50,"line":69},[48,405,135],{},[18,407,408,409,272],{},"If your methods have parameters you can describe them further with ",[25,410,411],{},"@ManagedOperationParameters",[38,413,415],{"className":40,"code":414,"language":42,"meta":43,"style":43},"@ManagedOperation(description = \"Get the number of all applications that have the given status.\")\n@ManagedOperationParameters({\n @ManagedOperationParameter(name = \"status\", description = \"The status may be waiting, allowed, rejected or cancelled.\")\n})\npublic long countApplicationsInStatus(String state) {\n // do something and return number of applications with the given status\n}\n",[45,416,417,422,427,432,437,442,447],{"__ignoreMap":43},[48,418,419],{"class":50,"line":51},[48,420,421],{},"@ManagedOperation(description = \"Get the number of all applications that have the given status.\")\n",[48,423,424],{"class":50,"line":57},[48,425,426],{},"@ManagedOperationParameters({\n",[48,428,429],{"class":50,"line":63},[48,430,431],{}," @ManagedOperationParameter(name = \"status\", description = \"The status may be waiting, allowed, rejected or cancelled.\")\n",[48,433,434],{"class":50,"line":69},[48,435,436],{},"})\n",[48,438,439],{"class":50,"line":75},[48,440,441],{},"public long countApplicationsInStatus(String state) {\n",[48,443,444],{"class":50,"line":81},[48,445,446],{}," // do something and return number of applications with the given status\n",[48,448,449],{"class":50,"line":87},[48,450,135],{},[18,452,453,454,456,457,459],{},"Make sure to annotate your Getter/Setter with ",[25,455,267],{}," and not with ",[25,458,271],{},". Otherwise your\nmethods won’t work.",[140,461,463],{"id":462},"_3-try-it","3. Try it!",[18,465,466],{},"You can now use the functions of your MBean either with JConsole or with other tools. (e.g. JMinix)",[18,468,469],{},[276,470,471],{},"3.1 JConsole",[18,473,474],{},"JConsole is part of Oracle’s JDK, so you can just start it by executing the JConsole command in your JDK’s\nbinary-folder. You can connect to local or to remote Java Virtual Machines. If you are running your application on the\nsame host as JConsole it should show up at the ‘Local Process’ section.",[18,476,477],{},[478,479],"img",{"alt":480,"src":481},"\"jconsole\"","https://media.synyx.de/uploads//2012/04/jconsole.png",[18,483,484],{},[276,485,486],{},"3.2 JMinix",[18,488,489],{},"If you want to have a JMX entry point in your web application instead of using JConsole, JMinix might be the right\nchoice for you.",[18,491,492],{},[478,493],{"alt":494,"src":495},"\"JMinix\"","https://media.synyx.de/uploads//2012/04/jminix.png",[18,497,498],{},"You can include it easily in your Maven based web application:",[18,500,501],{},"Add JMinix as dependency in your pom.xml",[38,503,505],{"className":149,"code":504,"language":151,"meta":43,"style":43},"\n\u003Cdependency>\n \u003CgroupId>org.jminix\u003C/groupId>\n \u003CartifactId>jminix\u003C/artifactId>\n \u003Cversion>1.0.0\u003C/version>\n\u003C/dependency>\n",[45,506,507,511,516,521,526,531],{"__ignoreMap":43},[48,508,509],{"class":50,"line":51},[48,510,159],{"emptyLinePlaceholder":158},[48,512,513],{"class":50,"line":57},[48,514,515],{},"\u003Cdependency>\n",[48,517,518],{"class":50,"line":63},[48,519,520],{}," \u003CgroupId>org.jminix\u003C/groupId>\n",[48,522,523],{"class":50,"line":69},[48,524,525],{}," \u003CartifactId>jminix\u003C/artifactId>\n",[48,527,528],{"class":50,"line":75},[48,529,530],{}," \u003Cversion>1.0.0\u003C/version>\n",[48,532,533],{"class":50,"line":81},[48,534,535],{},"\u003C/dependency>\n",[18,537,538],{},"JMinix uses a simple HttpServlet that you have to register and map to an url-pattern in your web.xml",[38,540,542],{"className":149,"code":541,"language":151,"meta":43,"style":43},"\u003C!-- JMX -->\n\u003Cservlet>\n \u003Cservlet-name>JmxMiniConsoleServlet\u003C/servlet-name>\n \u003Cservlet-class>org.jminix.console.servlet.MiniConsoleServlet\u003C/servlet-class>\n\u003C/servlet>\n\u003Cservlet-mapping>\n\u003Cservlet-name>JmxMiniConsoleServlet\u003C/servlet-name>\n\u003Curl-pattern>/jmx/*\u003C/url-pattern>\n\u003C/servlet-mapping>\n",[45,543,544,549,554,559,564,569,574,579,584],{"__ignoreMap":43},[48,545,546],{"class":50,"line":51},[48,547,548],{},"\u003C!-- JMX -->\n",[48,550,551],{"class":50,"line":57},[48,552,553],{},"\u003Cservlet>\n",[48,555,556],{"class":50,"line":63},[48,557,558],{}," \u003Cservlet-name>JmxMiniConsoleServlet\u003C/servlet-name>\n",[48,560,561],{"class":50,"line":69},[48,562,563],{}," \u003Cservlet-class>org.jminix.console.servlet.MiniConsoleServlet\u003C/servlet-class>\n",[48,565,566],{"class":50,"line":75},[48,567,568],{},"\u003C/servlet>\n",[48,570,571],{"class":50,"line":81},[48,572,573],{},"\u003Cservlet-mapping>\n",[48,575,576],{"class":50,"line":87},[48,577,578],{},"\u003Cservlet-name>JmxMiniConsoleServlet\u003C/servlet-name>\n",[48,580,581],{"class":50,"line":93},[48,582,583],{},"\u003Curl-pattern>/jmx/*\u003C/url-pattern>\n",[48,585,586],{"class":50,"line":98},[48,587,588],{},"\u003C/servlet-mapping>\n",[140,590,592],{"id":591},"_4-notifications","4. Notifications",[18,594,595],{},"Notifications (javax.management.Notification) can be broadcast from your component to notify about something interesting\nhappening. This is only a simple example of using Notifications.",[18,597,598],{},"Example: You want to be notified if a user logs in.",[38,600,602],{"className":40,"code":601,"language":42,"meta":43,"style":43},"@ManagedResource(objectName = \"mbeans:name=myJmxDemoBean\", description = \"Manage some 'Urlaubsverwaltung' problems.\")\npublic class JmxDemoReady implements NotificationPublisherAware {\n // lot of stuff\n private NotificationPublisher notificationPublisher;\n public void notifyAboutLogin(String msg) {\n notificationPublisher.sendNotification(new Notification(\"Login Action\", this, 0, msg));\n }\n @Override\n public void setNotificationPublisher(NotificationPublisher notificationPublisher) {\n this.notificationPublisher = notificationPublisher;\n }\n}\n",[45,603,604,609,614,618,623,628,633,637,642,647,652,656],{"__ignoreMap":43},[48,605,606],{"class":50,"line":51},[48,607,608],{},"@ManagedResource(objectName = \"mbeans:name=myJmxDemoBean\", description = \"Manage some 'Urlaubsverwaltung' problems.\")\n",[48,610,611],{"class":50,"line":57},[48,612,613],{},"public class JmxDemoReady implements NotificationPublisherAware {\n",[48,615,616],{"class":50,"line":63},[48,617,302],{},[48,619,620],{"class":50,"line":69},[48,621,622],{}," private NotificationPublisher notificationPublisher;\n",[48,624,625],{"class":50,"line":75},[48,626,627],{}," public void notifyAboutLogin(String msg) {\n",[48,629,630],{"class":50,"line":81},[48,631,632],{}," notificationPublisher.sendNotification(new Notification(\"Login Action\", this, 0, msg));\n",[48,634,635],{"class":50,"line":87},[48,636,78],{},[48,638,639],{"class":50,"line":93},[48,640,641],{}," @Override\n",[48,643,644],{"class":50,"line":98},[48,645,646],{}," public void setNotificationPublisher(NotificationPublisher notificationPublisher) {\n",[48,648,649],{"class":50,"line":104},[48,650,651],{}," this.notificationPublisher = notificationPublisher;\n",[48,653,654],{"class":50,"line":110},[48,655,78],{},[48,657,658],{"class":50,"line":115},[48,659,135],{},[18,661,662],{},"With the NotificationPublisher you are able to create Notifications in a very simple way. At the right place in your\ncode, you inject your JmxDemo Bean and call the method notifyAboutLogin() when a user logs in. JConsole now displays a\nthird menu item called ‘Notifications’, besides ‘Attributes’ and ‘Operations’. If you click on ‘Subscribe’, you get a\nNotification every time a user logs in your web application.",[140,664,666],{"id":665},"_5-further-information","5. Further information:",[18,668,669],{},[670,671,675],"a",{"href":672,"rel":673},"http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/jmx.html",[674],"nofollow","Spring Framework Reference Documentation",[18,677,678],{},[670,679,682],{"href":680,"rel":681},"http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html",[674],"About JConsole",[18,684,685],{},[670,686,689],{"href":687,"rel":688},"http://code.google.com/p/jminix/",[674],"About JMinix",[18,691,692],{},[670,693,696],{"href":694,"rel":695},"http://blog.synyx.de/2011/11/elektronische-urlaubsverwaltung-made-by-youngsters",[674],"About the vacation management web application",[698,699,700],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":43,"searchDepth":57,"depth":57,"links":702},[703,704,705,706,707],{"id":142,"depth":63,"text":143},{"id":256,"depth":63,"text":257},{"id":462,"depth":63,"text":463},{"id":591,"depth":63,"text":592},{"id":665,"depth":63,"text":666},[709,710],"azubi-blog","developer-blog","2012-05-07T17:56:12","JMX (Java Management Extensions) provides the infrastructure to support monitoring and management of your Java\\napplications. Resources you manage with JMX are called Managed Beans (MBeans). I want to show you how to quickly\\nregister your own Service as MBean using Spring and Source-Level Metadata (JDK 5.0+ annotations).","md","https://synyx.de/blog/how-to-monitor-and-manage-your-java-application-with-jmx/",{},"/blog/how-to-monitor-and-manage-your-java-application-with-jmx",{"title":7,"description":20},"blog/how-to-monitor-and-manage-your-java-application-with-jmx",[720,721,722,723,724,725,726,727],"annotation","jconsole","jminix","jmx","mbeans","metadata","notifications","spring","JMX (Java Management Extensions) provides the infrastructure to support monitoring and management of your Java applications. Resources you manage with JMX are called Managed Beans (MBeans). I want to show…","Lf-pqL8fxMUtFEesPQZ2fYbpNoUAqH8DOQaGCkCDsBA",[731,734,737,740,743,746,749,752,755,757,760,763,766,769,772,775,778,781,784,787,790,793,795,798,801,804,807,809,812,815,818,821,824,827,830,833,836,839,842,845,848,851,854,857,860,863,866,869,872,875,878,881,884,887,890,893,896,899,902,905,908,911,914,917,920,923,926,929,932,935,938,941,944,947,950,953,956,959,962,965,968,971,974,977,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1024,1027,1030,1033,1036,1038,1041,1044,1047,1050,1053,1056,1059,1062,1065,1068,1071,1074,1077,1080,1083,1086,1089,1092,1095,1098,1101,1104,1107,1110,1113,1115,1118,1121,1124,1127,1130,1133,1136,1139,1142,1145,1148],{"slug":732,"name":733},"abel","Jennifer Abel",{"slug":735,"name":736},"allmendinger","Otto Allmendinger",{"slug":738,"name":739},"antony","Ben Antony",{"slug":741,"name":742},"arrasz","Joachim Arrasz",{"slug":744,"name":745},"bauer","David Bauer",{"slug":747,"name":748},"bechtold","Janine Bechtold",{"slug":750,"name":751},"boersig","Jasmin Börsig",{"slug":753,"name":754},"buch","Fabian Buch",{"slug":9,"name":756},"Aljona Buchloh",{"slug":758,"name":759},"burgard","Julia Burgard",{"slug":761,"name":762},"caspar-schwedes","Caspar Schwedes",{"slug":764,"name":765},"christina-schmitt","Christina Schmitt",{"slug":767,"name":768},"clausen","Michael Clausen",{"slug":770,"name":771},"contargo_poetzsch","Thomas Pötzsch",{"slug":773,"name":774},"damrath","Sebastian Damrath",{"slug":776,"name":777},"daniel","Markus Daniel",{"slug":779,"name":780},"dasch","Julia Dasch",{"slug":782,"name":783},"denman","Joffrey Denman",{"slug":785,"name":786},"dfuchs","Daniel Fuchs",{"slug":788,"name":789},"dobler","Max Dobler",{"slug":791,"name":792},"dobriakov","Vladimir Dobriakov",{"slug":794,"name":794},"dreiqbik",{"slug":796,"name":797},"dschaefer","Denise Schäfer",{"slug":799,"name":800},"dschneider","Dominik Schneider",{"slug":802,"name":803},"duerlich","Isabell Duerlich",{"slug":805,"name":806},"dutkowski","Bernd Dutkowski",{"slug":808,"name":808},"eifler",{"slug":810,"name":811},"essig","Tim Essig",{"slug":813,"name":814},"ferstl","Maximilian Ferstl",{"slug":816,"name":817},"fey","Prisca Fey",{"slug":819,"name":820},"frank","Leonard Frank",{"slug":822,"name":823},"franke","Arnold Franke",{"slug":825,"name":826},"frischer","Nicolette Rudmann",{"slug":828,"name":829},"fuchs","Petra Fuchs",{"slug":831,"name":832},"gari","Sarah Gari",{"slug":834,"name":835},"gast","Gast",{"slug":837,"name":838},"graf","Johannes Graf",{"slug":840,"name":841},"grammlich","Daniela Grammlich",{"slug":843,"name":844},"guthardt","Sabrina Guthardt",{"slug":846,"name":847},"haeussler","Johannes Häussler",{"slug":849,"name":850},"hammann","Daniel Hammann",{"slug":852,"name":853},"heetel","Julian Heetel",{"slug":855,"name":856},"heft","Florian Heft",{"slug":858,"name":859},"heib","Sebastian Heib",{"slug":861,"name":862},"heisler","Ida Heisler",{"slug":864,"name":865},"helm","Patrick Helm",{"slug":867,"name":868},"herbold","Michael Herbold",{"slug":870,"name":871},"hofmann","Peter Hofmann",{"slug":873,"name":874},"hopf","Florian Hopf",{"slug":876,"name":877},"jaud","Alina Jaud",{"slug":879,"name":880},"jayasinghe","Robin De Silva Jayasinghe",{"slug":882,"name":883},"jbuch","Jonathan Buch",{"slug":885,"name":886},"junghanss","Gitta Junghanß",{"slug":888,"name":889},"kadyietska","Khrystyna Kadyietska",{"slug":891,"name":892},"kannegiesser","Marc Kannegiesser",{"slug":894,"name":895},"karoly","Robert Károly",{"slug":897,"name":898},"karrasz","Katja Arrasz-Schepanski",{"slug":900,"name":901},"kaufmann","Florian Kaufmann",{"slug":903,"name":904},"kesler","Mike Kesler",{"slug":906,"name":907},"kirchgaessner","Bettina Kirchgäßner",{"slug":909,"name":910},"klem","Yannic Klem",{"slug":912,"name":913},"klenk","Timo Klenk",{"slug":915,"name":916},"knell","Tobias Knell",{"slug":918,"name":919},"knoll","Anna-Lena Knoll",{"slug":921,"name":922},"knorre","Matthias Knorre",{"slug":924,"name":925},"koenig","Melanie König",{"slug":927,"name":928},"kraft","Thomas Kraft",{"slug":930,"name":931},"krupicka","Florian Krupicka",{"slug":933,"name":934},"kuehn","Christian Kühn",{"slug":936,"name":937},"lange","Christian Lange",{"slug":939,"name":940},"larrasz","Luca Arrasz",{"slug":942,"name":943},"leist","Sascha Leist",{"slug":945,"name":946},"lihs","Michael Lihs",{"slug":948,"name":949},"linsin","David Linsin",{"slug":951,"name":952},"maniyar","Christian Maniyar",{"slug":954,"name":955},"martin","Björnie",{"slug":957,"name":958},"martin-koch","Martin Koch",{"slug":960,"name":961},"matt","Tobias Matt",{"slug":963,"name":964},"mennerich","Christian Mennerich",{"slug":966,"name":967},"menz","Alexander Menz",{"slug":969,"name":970},"meseck","Frederick Meseck",{"slug":972,"name":973},"messner","Oliver Messner",{"slug":975,"name":976},"michael-ploed","Michael Plöd",{"slug":978,"name":979},"mies","Marius Mies",{"slug":981,"name":982},"mihai","Alina Mihai",{"slug":984,"name":985},"moeller","Jörg Möller",{"slug":987,"name":988},"mohr","Rebecca Mohr",{"slug":990,"name":991},"moretti","David Moretti",{"slug":993,"name":994},"mueller","Sven Müller",{"slug":996,"name":997},"muessig","Alexander Müssig",{"slug":999,"name":1000},"neupokoev","Grigory Neupokoev",{"slug":1002,"name":1003},"nussbaecher","Carmen Nussbächer",{"slug":1005,"name":1006},"ochs","Pascal Ochs",{"slug":1008,"name":1009},"oelhoff","Jan Oelhoff",{"slug":1011,"name":1012},"oengel","Yasin Öngel",{"slug":1014,"name":1015},"oezsoy","Enis Özsoy",{"slug":1017,"name":1018},"posch","Maya Posch",{"slug":1020,"name":1021},"ralfmueller","Ralf Müller",{"slug":1023,"name":1023},"redakteur",{"slug":1025,"name":1026},"reich","Michael Reich",{"slug":1028,"name":1029},"reinhard","Karl-Ludwig Reinhard",{"slug":1031,"name":1032},"rmueller","Rebecca Müller",{"slug":1034,"name":1035},"rosum","Jan Rosum",{"slug":1037,"name":1037},"rueckert",{"slug":1039,"name":1040},"ruessel","Sascha Rüssel",{"slug":1042,"name":1043},"sauter","Moritz Sauter",{"slug":1045,"name":1046},"schaefer","Julian Schäfer",{"slug":1048,"name":1049},"scherer","Petra Scherer",{"slug":1051,"name":1052},"schlicht","Anne Schlicht",{"slug":1054,"name":1055},"schmidt","Jürgen Schmidt",{"slug":1057,"name":1058},"schneider","Tobias Schneider",{"slug":1060,"name":1061},"seber","Benjamin Seber",{"slug":1063,"name":1064},"sommer","Marc Sommer",{"slug":1066,"name":1067},"speaker-fels","Jakob Fels",{"slug":1069,"name":1070},"speaker-gierke","Oliver Gierke",{"slug":1072,"name":1073},"speaker-krupa","Malte Krupa",{"slug":1075,"name":1076},"speaker-mader","Jochen Mader",{"slug":1078,"name":1079},"speaker-meusel","Tim Meusel",{"slug":1081,"name":1082},"speaker-milke","Oliver Milke",{"slug":1084,"name":1085},"speaker-paluch","Mark Paluch",{"slug":1087,"name":1088},"speaker-schad","Jörg Schad",{"slug":1090,"name":1091},"speaker-schalanda","Jochen Schalanda",{"slug":1093,"name":1094},"speaker-schauder","Jens Schauder",{"slug":1096,"name":1097},"speaker-unterstein","Johannes Unterstein",{"slug":1099,"name":1100},"speaker-wolff","Eberhard Wolff",{"slug":1102,"name":1103},"speaker-zoerner","Stefan Zörner",{"slug":1105,"name":1106},"stefan-belger","Stefan Belger",{"slug":1108,"name":1109},"steinegger","Roland Steinegger",{"slug":1111,"name":1112},"stern","sternchen synyx",{"slug":1114,"name":1114},"synyx",{"slug":1116,"name":1117},"szulc","Mateusz Szulc",{"slug":1119,"name":1120},"tamara","Tamara Tunczinger",{"slug":1122,"name":1123},"theuer","Tobias Theuer",{"slug":1125,"name":1126},"thieme","Sandra Thieme",{"slug":1128,"name":1129},"thies-clasen","Marudor",{"slug":1131,"name":1132},"toernstroem","Olle Törnström",{"slug":1134,"name":1135},"ullinger","Max Ullinger",{"slug":1137,"name":1138},"ulrich","Stephan Ulrich",{"slug":1140,"name":1141},"wagner","Stefan Wagner",{"slug":1143,"name":1144},"weigel","Andreas Weigel",{"slug":1146,"name":1147},"werner","Fabian Werner",{"slug":1149,"name":1150},"wolke","Sören Wolke",["Reactive",1152],{"$scookieConsent":1153,"$ssite-config":1155},{"functional":1154,"analytics":1154},false,{"_priority":1156,"env":1160,"name":1161,"url":1162},{"name":1157,"env":1158,"url":1159},-10,-15,0,"production","nuxt-app","https://synyx.de",["Set"],["ShallowReactive",1165],{"category-jconsole":-1,"authors":-1},"/blog/tags/jconsole"]