SigmaT.
|
|
|
- Adam Bak
- 9 år siden
- Visninger:
Transkript
1 Java + Groovy
2 Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt om
3 SigmaT Trym Reinholdt Møller, SigmaT Freelance J2EE konsulent 36 år Har to børn og bor i Risskov Har tidligere arbejdet ved Creuna, Terma og Acure, An IBM Division
4 Groovy eksempel GroovyRunner i Eclipse
5 Om PEM Personlig Elektronisk Medicinprofil (PEM) Integrerer til 250 kørende apotekssystemer, der hvert minut henter informationer eller opdaterer disse Integrerer til samtlige lægehuse, der sender elektroniske recepter Krav om høj oppetid samt stor robusthed Dvs. kvartalsvise deploys MEN løbende fejlfinding i data og i kommunikationen med integrationssystemerne
6 Overvågning af PEM Krav om reaktionstid indenfor 15 minutter ved problemer Ønske om at kende problemerne før kunden ITD har 24x7 overvågning, der ringer til PEM-vagten ITD overvåger specifik log fil på produktionsmiljøet ved hjælp af Tivoli software PEM applikationen logger følgende til den overvågede log fil: Hardcoded kendte problemer Et filtreret udsnit af uforudsete logninger fra log4j
7 PEM Applikationen PEM er en J2EE applikation, der afvikles på en Trifork applikationsserver med Oracle som database Der anvendes log4j frameworket til logning
8 Udfordringer med filtreringen Filtreringen var hardcoded og inkluderede alle logninger, der stammede fra java.sql.sqlexception Dette viste sig for Grovkornet, da vi ikke behøvede at håndtere alle sql-exceptions manuelt Ufleksibelt, når vi ønskede at ændre filtreringen og ikke lige kunne deploye en ny version af vores applikation
9 Krav til filtreringen Muligt at kunne konfigurere filtreringen dynamisk (ligesom log4j) Muligt, uden at lave et nyt xml-sprog, at være præcis angående den ønskede filtrering Dvs. vi ville gerne dynamisk/runtime kunne loade en scriptbar filtrering
10 Log4j <root> <priority value ="info" /> <appender-ref ref="dependent_monitored" /> </root> <appender name="dependent_monitored" class="dk.acure.pem.util.log4j.eventdependentappender"> <param name="isgroovy" value= ToMonitoredLog"/> <appender-ref ref="async_monitored" /> </appender>...
11 Log4j Appender public class EventDependentAppender extends AppenderSkeleton implements AppenderAttachable { public void append(loggingevent event) { synchronized(aai) { if (toappenders(event)) { Enumeration e = getallappenders(); while (e.hasmoreelements()) { Appender appender = (Appender)e.nextElement(); appender.doappend(event); public void setisgroovy(string groovyscriptname) {
12 Hardcoded java filtrering (*.java) package dk.acure.pem.services.v2.util; import org.apache.log4j.spi.loggingevent; public class ToMonitoredLog implements EventDependentAppenderDecideInterface { private LogTargetHelper lth = new LogTargetHelper(); public boolean toappenders(loggingevent event) { if (event.getthrowableinformation()!= null) { Throwable t = event.getthrowableinformation().getthrowable(); if (t!= null) { return lth.isthrowabletype(t, java.sql.sqlexception.class); return false;
13 Groovy filtering (*.groovy) import org.apache.log4j.spi.loggingevent; public class ToMonitoredLog implements EventDependentAppenderDecideInterface { private LogTargetHelper lth = new LogTargetHelper(); public boolean toappenders(loggingevent event) { if (event.getthrowableinformation()!= null) { Throwable t = event.getthrowableinformation().getthrowable(); if (t!= null) { return lth.isthrowabletype(t, java.sql.sqlexception.class); return false;
14 En Groovy filtrering private LogTargetHelper lth = new LogTargetHelper(); public boolean toappenders(loggingevent event) { if (event.getthrowableinformation()!= null) { Throwable t = event.getthrowableinformation().getthrowable(); if (t!= null) { return ((lth.isthrowabletype(t, java.sql.sqlexception.class)) &&!((t.getmessage().indexof("closed Connection") > -1) && (containsstr("clob.length", event.getthrowableinformation().getthrowablestrrep())))); return false;
15 Dynamisk load af Groovy script // groovyroots is the folder containing groovy script files GroovyScriptEngine mygse = new GroovyScriptEngine(getGroovyRoot()); // load the current instance of the groovy file as a java class Class myjavafromgroovyclass = mygse.loadscriptbyname(getscriptname()); // create instance of a non-jvm classloaded class. Object groovyinstance = myjavafromgroovyclass.newinstance(); // Cast and use the instance EventDependentAppenderDecideInterface edadigroovy = (EventDependentAppenderDecideInterface)groovyInstance; edadigroovy.toappenders(event);
16 Opsamling Ønske om dynamisk load af Java lignende script, kan løftes af Groovy Ikke fortalt om: Performance/caching af loaded script Unittest Anvendelse af et dynamisk sprogs muligheder Sikkerhed ved dynamisk loaded kode Scripts i klar tekst adgangskontrol til folderen Versionsstyring, nemt at ændre uden deploy Flere versioner af samme klasse loaded i classloaderen /applikationen. Andre måder at integrere Groovy og Java
17 Referencer - Groovy home j-alj08034.html
18 Groovy eksempel fra Eclipse package dk.sigmat.test.groovy; import groovy.util.groovyscriptengine; public class GroovyRunner { public static void main(string[] args) { GroovyRunner runner = new GroovyRunner(); try { runner.run(); catch (Throwable e) { private void run() throws Throwable { // groovyroots is the folder containing groovy script files GroovyScriptEngine mygse = new GroovyScriptEngine(getGroovyRoot());// IOException // load the current instance of the groovy file as a java class Class myjavafromgroovyclass = mygse.loadscriptbyname(getscriptname());// ResourceException, ScriptException // create instance of a non-jvm classloaded class. Object groovyinstance = myjavafromgroovyclass.newinstance();// InstantiationException, IllegalAccessException // Cast to at java interface or super class and use the instance Runnable HelloWorldGroovy = (Runnable)groovyInstance; HelloWorldGroovy.run(); private String getscriptname() { return "HelloWorld";
Databaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Software Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Dag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Hvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Eksempel på en database: studenter, kurser, eksamener
Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser
University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Singleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
A Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til [email protected]. Besvarelsen skal
Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
Test af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Løsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007
MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge
RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Ugeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.
Denne guide er oprindeligt udgivet på Eksperten.dk XML parsning i Java Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Den forudsætter kendskab til Java og XML.
Videregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Løsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
BRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Tree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Virkefeltsregler i Java
Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten
Google App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben
GoogleAppEngine GoogleAppEnginesomplatform ClausMyglegaardVagnerogJacobvonEyben Abstract CloudcomputingerenteknologidervinderfremidengenerelleITinfrastruktur. SocialemediersåsomLinkedIn,TwitterogFacebookharøgetbehovetfor
Introduktion til ActionScript, fortsat
Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen [email protected] i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, [email protected] 1 Dagens program Opsamling
SAX Simple API for XML.
SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller
KIH Database. Systemdokumentation for KIH Databasen. 12. september 2014. Side 1 af 20
KIH Database Systemdokumentation for KIH Databasen 12. september 2014 Side 1 af 20 Indholdsfortegnelse Indholdsfortegnelse Indledning Systemoverblik KIH Database applikationsserver Forudsætninger før installation
Anvendelse af metoder - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur
KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13
KIH Database Systemdokumentation for KIH Databasen 1. maj 2013 Side 1 af 13 Indholdsfortegnelse Indholdsfortegnelse... 2 Indledning... 3 Systemoverblik... 3 KIH Database applikationsserver... 5 Forudsætninger
Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation
Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et
Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations
Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University
Videregående programmering i Java
Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags
DM502. Peter Schneider-Kamp ([email protected]) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp ([email protected]) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Web- og serverprogrammering
Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Web- og serverprogrammering Databasekommunikation - dag 7 Strategier til databaseadgang JDBC (Java DataBase Connectivity)
Model Drevet Design i Praksis
Model Drevet Design i Praksis Dansk IT - På Vej Hjem møde d. 8/9-2009 Jeppe Cramon - TigerTeam ApS Lidt om mig 15 års erfaring som software udvikler Partner i TigerTeam Første erfaring med model drevet
02101 Indledende Programmering Introduktion til Eclipse
02101 Indledende Programmering Introduktion til Eclipse Version 2018 1 Introduktion I dette kursus lægger vi op til at man bruger det integrerede udviklingsmiljø Eclipse. Basalt set er et integreret udviklingsmiljø
DANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
SOSI STS Dokumentationsoverblik
SOSI STS Dokumentationsoverblik - for Sammenhængende Digital Sundhed i Danmark Date: 19. August, 2009 Version: 0.3 Author: Arosii A/S Indholdsfortegnelse 1 Introduktion...3 2 Dokumentationselementer...4
Fundamentale sprogbegreber
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn) Oversigt Sætninger simple sætninger (assignment, metodekald) sammensatte sætninger (selektion,
Webserverprogrammering
Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
software bricks & glue for system integration
Produktet: Denva Service Alert Infrastructure (DSAI) AlertServiceTest DSAI løsning giver mulighed for at løbende at overvåge processer & services på Windows computer. Optimerer: Løsninger giver mulighed
Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
SAS USER FORUM DENMARK 2017 USER FORUM. Rune Nordtorp
SAS USER FORUM USER FORUM Rune Nordtorp Agenda Logning Audit logning Og hvorfor er det lige pludselig blevet vigtigt Logning i SAS -platformen Ressource Inventory Model Introduktion til opsætning af logning
Kursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Objektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Version Dato Beskrivelse 1.0.0 26/11/2012 Initial version 1.2.0 05/03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.
MOX og APOS2 Forord Dette dokument er en del af APOS version 2 manualerne. APOS version 2 (APOS2 herefter) er et organisation, klassifikation og personale system baseret på Sag & Dokument standarderne.
Eksempel: et ordresystem note 5 Lagdeling s. 1
Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar
Objektorienteret Programmering
Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:
Om binære søgetræer i Java
Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret
Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere
Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Dokument version: 2.0 ADS version: 1.0 Henvendelse vedrørende affald: Miljøstyrelsen Roskilde, Affaldssekretariatet
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
