ANT tasks der Java User Group

9. Juni 2010 von Jan in Java, Java Code Beispiele

Ant ist ein überaus mächtiges Werkzeug für die Automatisierung und Sicherstellung des build-Prozesses in immer gleicher Qualität. Zudem ist es sehr leicht anpassbar und erweiterbar.
Hier ein paar Beispiele aus der Java User Group:

Diese Task sind als Binaries und Source code verfügbar und stehen unter der GPL. Da diese Libs nicht in Produkte integriert werden stellt die GPL auch kein Problem für den kommerziellen Einsatz dieser Task dar.

Diese Task sind bereits im produktiven Einsatz in aktuell 3 Projekten (1 Open Source Projekt und 2 Individual Projekte für kommerzielle Zwecke).

Viel Spass beim Ausprobieren.

Wir freuen uns über Anregungen und Kommetare: jan dot lolling at googlemail dot com.

  • Kommentare deaktiviert

JDBC Metadaten für Oracle stored procedures

5. April 2010 von Jan in Java, Java Code Beispiele
Schlagwörter:

Das Konstrukt der Packages wird durch JDBC nicht wirklich gut unterstützt. JDBC geht leider auch von eindeutigen Namen für functions und procedures aus. Somit hat man ein Problem mit überladenen procedures. Diese unterscheiden sich nicht im Namen sondern in der Anzahl und Typen der Parameter.
Der Oracle-JDBC-Treiber gibt alle Informationen raus, es erfordert nur etwas Geschick diese Informationen einzusammeln.
1. Die Name der packages werden als CATALOG ausgegeben.
2. Die Parameter kennen ihren Index. Wenn ein Parameter für scheinbar die selbe procedure erscheint mit dem gleichen Index, dann ist das ein Zeichen für eine überladene procedure.

Der folgende Beispielcode geht davon aus, dass die procedures und functions in speziellen Objekten gehalten werden und die Parameter besitzen auch ihre eigene Transferklasse.

	/**
	 * load procedure and functions
	 * 
	 * @param schema
	 *            object that represent a schema
	 * @return true if everything went well
	 */
	public boolean loadProcedures(SQLSchema schema) {
		if (logger.isDebugEnabled()) {
			logger.debug("loadProcedures schema=" + schema);
		}
		// makes this thread save
		inRefreshCycle = true;
		boolean ok = false;
		// don' worry about that, we use our own database pool
		final DatabaseSession session = DatabaseSessionPool.getDatabaseSession(cd.getUniqueId());
		if (session == null) {
			// return if no connection to database avialable
			return false;
		}
		try {
			Connection conn = session.getConnection();
			DatabaseMetaData dbmd = conn.getMetaData();
			schema.clearProcedures(); // remove any previously loaded procedures
			ResultSet rs = dbmd.getProcedures(null, schema.getName(), null);
			if (rs != null) {
				// loading all procedures and functions
				while (rs.next()) {
					// PROCEDURE_CAT contains the package name
					String catalogName = rs.getString("PROCEDURE_CAT");
					String name = rs.getString("PROCEDURE_NAME");
					if (catalogName != null && catalogName.length() > 0) {
						name = catalogName + "." + name;
					}
					// create an new one
					SQLProcedure procedure = new SQLProcedure(this, schema,	name);
					// decide if it is a function
					short pType = rs.getShort("PROCEDURE_TYPE");
					procedure.setFunction(pType == DatabaseMetaData.procedureReturnsResult);
					schema.addProcedure(procedure);
					objectMap.put(name, procedure);
				}
				rs.close();
			}
			// loading procedure/function parameters
			rs = dbmd.getProcedureColumns(null, schema.getName(), null, null);
			if (rs != null) {
				// an index for overloaded procedures
				int procedureIndex = 0;
				String prevProcedureName = "noprocedurehere_xx";
				while (rs.next()) {
					// PROCEDURE_CAT contains the package name
					String catalogName = rs.getString("PROCEDURE_CAT");
					String name = rs.getString("PROCEDURE_NAME");
					if (catalogName != null && catalogName.length() > 0) {
						// add the catalog name as package name
						name = catalogName + "." + name;
					}
					int pos = 0;
					try {
						// position of this parameter in the procedure parameter
						// list
						pos = rs.getInt("ORDINAL_POSITION");
					} catch (Exception e) {
						// perhaps this column is not defined in every database
						// type
						pos = -1;
					}
					if (prevProcedureName.equals(name)) {
						if (pos == 0) {
							// if we get the same procedure name and a parameter
							// with position zero increase the procedure index
							// that means point to the next procedure with the
							// same name
							procedureIndex++;
						}
					} else {
						procedureIndex = 0;
					}
					String columnName = rs.getString("COLUMN_NAME");
					List list = schema.getProcedures(name);
					SQLProcedure procedure = list.get(procedureIndex);
					if (procedure != null) {
						procedure.addParameter(columnName, // parameter name
								rs.getShort("DATA_TYPE"),  // parameter type as
														   // integer defined
														   // in class
														   // java.sql.Type
								rs.getString("TYPE_NAME"), // parameter type as
														   // string
								rs.getInt("LENGTH"),    // length of the parameter
														// if parameter is
														// string or number type
								rs.getInt("PRECISION"), // precision of the
														// parameter if the
														// parameter is a number
														// type
								rs.getShort("COLUMN_TYPE")); // input or output
														     // parameter as
														     // integer:
															 // refer
															 // DatabaseMetaData.procedureColumnReturn
					}
					// keep the name of the last procedure to detect overloaded
					// procedures
					prevProcedureName = name;
				}
				rs.close();
			}
			schema.setProcedureLoaded();
			ok = true;
		} catch (SQLException sqle) {
			// creates a error message to show it in GUI
			errorMessage = "loadProcedures schema=" + schema + " failed: "
					+ sqle.getMessage();
		} finally {
			// put the session back in the pool
			DatabaseSessionPool.release(session);
		}
		inRefreshCycle = false;
		return ok;
	}
  • Kommentare deaktiviert

Überblick über die Roblet®-Technik

1. März 2010 von Ralph Bergmann in Java, Treffen
Schlagwörter:, , , ,

Der Vortrag:

Überblick über die Roblet®-Technik

Verteilte Systeme bestimmen immer mehr das Bild der Software-Entwicklung. Je einfacher sich die Software verteilen läßt, je einheitlicher die Technik ist und je transparenter das Netzwerk ist, um so effizienter ist die Software-Entwicklung. Diesen Zusammenhang nennen wir das Effizienzdreieck verteilter Systeme.

Die Roblet®-Technik setzt das Effizenzdreieck auf praktische Weise um. Sie ist eine in Java™ implementierte Softwareschicht zwischen Anwendung und Übertragungsnetzwerk. Dabei wird spezifische, verteilte Funktionalität durch das Versenden und Ausführen von parametrisierten Programmstücken, den Roblets®, erreicht. Die Technikvereinheitlichung wird durch den konsequenten Einsatz von Java™ umgesetzt. Die Bibliotheken der Roblet¨-Technik bringen die Netzwerktransparenz und behandeln sämtliche Aspekte der Kommunikation.

Ursprünglich aus der Robotik stammend ist die Roblet®-Technik heute auch in der Automatisierung und in Web-Anwendungen präsent – ihre Anwendbarkeit geht aber weit darüber hinaus. Als Netzwerk-Middleware kann sie in der Praxis quasi RMI ersetzen, ist aber wesentlich einfacher in der Handhabung. Die Roblet®-Technik läßt sich gut mit Techniken wie OSGi oder innerhalb bestehender Strukturen einsetzen.

Der Vortrag gibt einen Überblick über die Roblet®-Technik mit leicht verständlichen Anwendungsbeispielen. Die Beispiele kommen nicht nur aus der Robotik, sondern umfassen auch Hausautomatisierung, Dateisysteme, Datenbanken, Fenstersysteme und 3D-Grafik. Interessierte sind aufgefordert, einen Laptop mit Java und WLAN mitzubringen, um selbst innerhalb weniger Minuten nach dem Vortrag mit eigenen Roblets Hausautomatisierung auf bereitgestellter beispielhafter Haustechnik zu betreiben.

Die Roblet®-Technik ist kostenfrei verfügbar und wird von roblet.org betreut. Hagen Stanek ist dort maßgeblich mit aktiv. Er ist darüber hinaus Geschäftsführer der genRob GmbH, welche im Bereich verteilter Systeme tätig ist. Schließlich ist er als Kassenwart der JUG Stuttgart (JUGS e.V.) ehrenamtlich im Java-Umfeld tätig.

Der Treffpunkt:

Wir treffen uns im newthinking store, Tucholskystrasse 48, 10117 Berlin.

Der Ablauf:

18:30 Tür auf, Zeit für etwas Networking
19:00 Vortrag “Überblick über die Roblet®-Technik”

  • Kommentare deaktiviert

Präsentiert vom Java Magazin und Eclipse Magazin: Code Camps zu Java EE 5/6 und Eclipse Modeling in Berlin, Anfang März – Für Mitglieder 15% Sonderrabatt

11. Januar 2010 von Ralph Bergmann in Java, Treffen
Schlagwörter:, ,

Für Mitglieder der Java User Group Berlin Brandenburg 15% Sonderrabatt auf den Teilnehmerpreis. Bitte schreiben Sie eine Nachricht an mhillert@entwickler-akademie.de, um den Rabatt zu erhalten.


Die Code Camps der entwickler Akademie werden exklusiv vom Java Magazin, vom Eclipse Magazin und der Entwickler Akademie präsentiert und vereinen jeweils zwei der bekanntesten Profis der vorgestellten Technologien. Alle Experten sind bekannt als Autoren des Java Magazins und als Top-Speaker auf Konferenzen wie der JAX. Hier finden Sie einen Überblick über die Camps. Weitere Details finden Sie auf www.entwickler-akademie.de.

*** JAVA CODE CAMP – Java EE 5/6

01. – 04. März 2010, NH Hotel Berlin Mitte

Mit Lars Röwekamp & Jens Schumann!

Zwei der bekanntesten deutschsprachigen Java EE-Experten – Lars Röwekamp und Jens Schumann – machen Sie fit für die erfolgreiche Umsetzung von Java EE-Projekten. Die Java Enterprise Edition (kurz: Java EE) erlebt aktuell eine Renaissance – und dies zu Recht. Und auch das Komponentenmodell EJB ist spätestens seit der Version 3.0 wieder salonfähig. Java EE bietet deutlich mehr als nur eine lose Sammlung von Spezifikationen. Neben reiner Technologie definiert sie vor allem Architekturansätze und Konzepte für die Entwicklung und Integration moderner, mehrschichtiger Enterprise-Anwendungen – egal ob Portale, Web-, Desktop- oder Mobile-Clients. Das Java Code Camp – Java EE 5/6 beschäftigt sich anhand eines umfangreichen, praktischen Beispiels eingehend mit den Grundkonzepten von Java EE 5 und Java EE 6 und veranschaulicht neben der reinen Implementierung auch andere wichtige Facetten des Enterprise Software Life Cycles, wie zum Beispiel Software Configuration Management, Software Test Management und Software Runtime Monitoring/Management.

Alle Infos auf: www.entwickler-akademie.de/codecamps/java-cc-ee56

*** ECLIPSE CODE CAMP – Modeling

1. bis 5. März 2010, NH Hotel Berlin Mitte

Das Eclipse Code Camp – Modeling ist eine exklusive Veranstaltung, die vom Eclipse Magazin und der Entwickler Akademie zum zweiten Mal präsentiert wird. Das erste Eclipse Code Camp im Oktober 2010, in München, hatte bei den Teilnehmern für Begeisterung gesorgt. Nutzen auch Sie die Chance, diese exklusive Veranstaltung, mit zwei der weltweit besten Eclipse-Modeling-Experten nun in Berlin zu erleben. Eike Stepper & Ed Merks werden Ihnen in Teamarbeit ein einzigartiges Trainingserlebnis bieten. Sie werden von beiden Experten immer gleichzeitig betreut. Zusätzlich sorgt die Begrenzung der Teilnehmerzahl auf maximal 15 Personen für optimale Lernergebnisse. Das Camp findet nur zweimal im Jahr statt. Bitte melden Sie sich daher rechtzeitig an, um sich einen Platz zu sichern. Bitte beachten Sie, dass ein Großteil der Inhalte des Camps in englischer Sprache vermittelt wird.

Während sich die frühen Tage der Modellierung durch unrealistische Erwartungen und leere Versprechen auszeichneten, ist die zugrunde liegende Technologie seitdem gereift und kann heute ihr wahres Potenzial als ein unglaublich produktives Paradigma entfalten — wenn sie richtig angewendet wird. Der pragmatische Modellierungsansatz von Eclipse als integraler Aspekt der Entwicklung und als Schlüsselkomponente zur Laufzeit bietet volle Unterstützung für moderne Enterprise-Systeme. Dieses fünftägige Training illustriert auf eindrucksvolle Weise die enormen Vorteile und vermittelt Ihnen, wie Sie auch in Ihren eigenen Projekten davon profitieren können. Indem Sie von führenden Experten der Eclipse Modellierungsszene lernen, werden Sie sowohl einen umfassenden Überblick über den neuesten Stand der Technik, als auch tiefgehende Einblicke in das Repertoire der beteiligten Bausteine mitnehmen können. Zusammen mit Ed Merks, dem Leiter des Eclipse Modeling Top-Level Projekts und des Eclipse Modeling Framework (EMF) Projekts, und Eike Stepper, dem Leiter des CDO Model Repository Projekts, werden Sie fünf aufregende und amüsante Tage verbringen. Die einzelnen Sessions bestehen aus sehr gut aufeinander abgestimmten Präsentationen und Diskussionsblöcken, die durch ausgiebige Übungen ergänzt werden. Sie werden entdecken, wie wenig ermüdende Handarbeit nötig bleibt, wenn die erlernten Modellierungstechniken effektiv angewendet werden. Die Tatsache, dass die zum Einsatz gebrachte Technologie offen und frei verfügbar ist, stellt sicher einen Zusatzbonus dar.

Alle Infos auf: www.entwickler-akademie.de/codecamps/eclipse-cc-modeling

  • Kommentare deaktiviert

Management von Last- und Performancetests

1. Dezember 2009 von Ralph Bergmann in Java, Treffen
Schlagwörter:, , , ,

Letzten Donnerstag (26.11.) sprach Victor Czenter, C1 SetCon GmbH zu uns zum Thema “Management von Last- und Performancetests”.

Wie immer trafen wir uns im newthinking store.

Für all die, die nicht zum Vortrag kommen konnten, stellen wir hier die Folien des Vortrages online.

Ralph

Title: Victor Czenter - Management von Last- und Performancetests (JUGBB 26.11.2009)
File: Victor-Czenter-Management-von-Last-und-Performancetests-JUGBB-26.11.2009.pdf
Size: 7 MB
  • Kommentare deaktiviert

« vorherige Beiträge