my container.

Einträge werden als ‘JAX 07’ kategorisiert

JAX 07: Apache und Tomcat 6

April 27, 2007 · 1 Kommentar

Workshop, Peter Roßbach @ JAX ‘07, Wiesbaden + + +

Integration in Maven: Projekt Cargo

News in Tomcat 6

  • Support für Servlet 2.5 und JSP 2.1 API’s
  • Apache 2.0 Lizenz
  • Neue Connectoren (NIO)
  • Reduktion der Abhängigkeiten, Vereinfachung der Verzeichnisstrucktur
  • Neue JSP Engine (w/ JSF)
  • Coyote Connectoren optimiert: Verbesserung der Performance, Mod_JK 1.2.22, Native Connectoren im Tomcat >= 5.5.17
  • Erleichterung der Administration (JMX 1.2)
  • Einsatz des Eclipse 3.2 Compiler (JRE ready mit Java 5 JDT) – schneller, kleiner, besser handlebare Lizenz

Tomcat

  • jsvr – Wrapper für Tomcat, funktioniert wie Watchdog
  • Security Manager – steuert Zugriff auf Systemressourcen

App Reload (während der Entwicklungszeit)

in context.xml: Resources Monitoring:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

  • Logging seit Tomcat 6.x
  • neues API
  • neues layout der Konfig Datei

Ports

  • 8080 – http
  • 8443 – https
  • 8009 – ssl
  • 8005 – shutdown
  • 9000 – JMX-Apdaptor http
  • 1099 – JMX-Apdaptor rmi
  • 0900 – JMX-Apdaptor iiop

Tomcat Pipeline

  • Server > Service > Engine > Host > Context > Wrapper
  • jeder Übergang wird mit einer Pipeline verbunden. An den Pipelines können Valves angeflanscht werden

Infos über den Tomcat & Server

  • Tool: Lambda Probe
  • Link: http://www.lambdaprobe.org
  • >> lambdaprobe.org: „Lambda Probe (formerly Tomcat Probe) is a self sufficient web application, which helps to visualize various parameters of Apache Tomcat instance in real time. Lambda Probe is designed to work specifically with Tomcat so it is able to access far more information that is normally available to JMX agents.“
  • Umfassende Infos über Tomcat, Apps, JVM…
  • noch keine vollständige Unterstützung von Tomcat 6.x (Stand: 2007-04-27)

Protokoll-Handler austauschen

  • in der server.xml wird das Protokoll gegen eine Klasse ausgtauscht, die das Protokoll implementiert

<Connector port=“8080″ protocol=“org.apache.coyote.http11.Http11NioProtocol“
connectionTimeout=“20000″
redirectPort=“8443″ />
<!–
<Connector port=“8080″ protocol=“HTTP/1.1″
connectionTimeout=“20000″
redirectPort=“8443″ />
–>

Arbeiten mit mod_jk

  • Eigenen conf-Datei in httpd.conf includen:

<IfModule !mod_jk.c>
LoadModule jk_module „modules/mod_jk.so“
</IfModule>
JkShmFile „logs/mod_jk.shm“
JkLogFile „logs/mod_jk.log“
JkLogLevel info
JKWorkersFile conf/workers.properties
JKWorkerProperty worker.list=loadbalancer,jkstatus
JKWorkerProperty worker.node01.port=8009
JKWorkerProperty worker.node01.host=localhost
JKWorkerProperty worker.node01.type=ajp13
JKWorkerProperty worker.node01.domain=d10
JKWorkerProperty worker.node01.lbfactor=4
JKWorkerProperty worker.loadbalancer.type=lb
JKWorkerProperty worker.loadbalancer.balance_workers=node01
JKWorkerProperty worker.jkstatus.type=status
JkMount /jkstatus jkstatus
JkMount /example* loadbalancer

Tipp: Template verwenden wenn viele Nodes im Einsatz sind:

JKWorkerProperty worker.template.type=ajp13
JKWorkerProperty worker.template.connection_pool_timeout=300

JKWorkerProperty worker.node01.lb.balance_workers_node=node101
JKWorkerProperty worker.node01.reference=worker.template

thanks to Peter Roßbach! Great work!

Kategorien: JAX 07 · Java · Tomcat

JAX 07: Ende der Sessions

April 27, 2007 · Kommentar schreiben

Die Sessiontage der JAX sind vorbei. Viele interessante Vorträge habe ich gehört, und irgendwie sind die letzten 3 Tage mal wieder viel zu schnell vergangen. Das Team vom Software & Support – Verlag hat wirklich eine super Arbeit gemacht! Danke!

Kategorien: JAX 07

JAX 07: Java 6 SE

April 26, 2007 · Kommentar schreiben

Java 6 SE kommt bereits mit

  • Derby. Funktionen für Stammdatencache etc find also bereits vorhanden.
  • JNLP (WebStart)
  • Scripting Support
  • Remote Monitoring der JVM ist über Netzwerk bereits vorhanden (Java Monitoring an Management Console)
  • JPA kann vom Glassfish-Projekt verwendet werden (2 jar’s). Die direkte nutzung von JDBC wird nicht mehr benötigt
  • java.util.logging reicht für clientseitiges Logging aus.
  • java.util.concurrent: ein einfacher Thread-Pool
  • java.rmi: Remothe Method Invocation: einfaches Kommunikationsprotokoll für Client-Server-Kommunikation
  • java.util.ServiceLoader – sucht nach implementierungen eines Interfaces (from meta-inf/services) -> eigenen Wrapper für ServiceLoader bauen (S.13)
  • java.beans.XMLEncoder und java.beans.XMLDecoder – ein einfacher Web zu persistenten Beans! Allerdinsg sind keine Beziehugen zwischen Objekten möglich
  • java.util.preferences – Zurgiff auf Windows Registry

JMX

  • wurde entwickelt um Management- und Monitoring-Funktionen anzubieten
  • ist in Java 6 SE enthalten. JSR 3 stammt genu genommena us dem Ahr 2001…
  • beziet sich auf ein zu definierendes Objekt, weches Daten veröffentlicht. Dieses muss „nur“ registriert werden…
  • Registrierung im MBeanServer
  • Achtung: eine MBan darf nur ein mal registriert sein, ansonsten wird eine Exception ausgelöst

RMI

  • Remote Method Invokation

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface HelloWorldService extends Remote{
public String helloFromServer(String greeting) throws RemoteException;
}

  • Server benötige eine Klasse mit main Methode (aslo qusi der Server)
  • Client: fragt über Naming.lookup(„rmi://adress“) Service ab

Scripting Integration

  • Vorteile: kann schneller sein in Entwicklungszeit und Ausführung
  • Fluid Kernel: Fragmente können dynamisch nachgeladen vwerden – während der Laufzeit!
  • JSR-233 (scripting fo the Java Platform)
  • Zugriff von den Scriptsprachen auch die Java-Libs möglich!
  • siehe Package javax.scripting

ScriptEngineManager engineManager = new ScriptEngineManager();
scriptEngine = engineManager.getEngineByName(„JavaScript“);

  • in Java 6: JavaScript hat zur Zeit eine wesentlich höhere Ausführungsgeschwindigkeit als Groovie (etwa Faktor 10!)

JPA

  • vollkommener Verzicht auf DAO’s!
  • DAO’s nur für Stored Procedures zwingend notwendig
  • Eclipse DALI zur generierung von JPA aus RDBs

SWING

  • Andere Themes / Layout Manager verwenden
  • Matisse GUI Builder
  • großer Performancegewinn in Java 6! Außerdem: Java Swing erhält eine native Unterstützung in Windows Vista, was die Ausführungsgeschwindigkeit nochmals wesentlich erhöhen wird!

thanks to Adam Bien! (adam-bien.com)

Kategorien: JAX 07 · Java

JAX 07: Web Services mit JAX-WS

April 26, 2007 · Kommentar schreiben

Idee

  • Vereinheitlichung der verschiedenen aktuell genutzten Herangehensweisen (AXIS, Fire, RI,…)
  • Interoperabilität mit Fremdsystemen (.NET)
  • State-of-the-Art Model für die Entwicklung

Historie

Object / XML Mapping

  • mittels JAXB (2.x)
  • hohe Performance
  • ebenfalls auch als einzelnes Projekt verfügbar
  • > http://jaxb.dev.java.net

WSDL to Service

  • Ausgangspunkt WSDL, Skeleton bauen, Annotation @WebService(endpointInterface(name=“AddNumbersPort“))
  • Deploy 1: Klasse Endpoint; Methode publish. Integriert in JAX-WS
  • Deploy 2: über JAX-WS im Web Cotainer, com.sun.xml.transport.http.servlet WSServlet – für „spezielel „Wünsche, zB Load Balancing
  • Deploy: interner Server für Service Deployment
  • Deploy: main-Methode + Endpoint.publish(„http://localhost:8080/addnumbers“)
  • Nutze Annotatins für Konfiguration! @WebMethod, @WebResult, @RequestWrapper…
  • Aufruf wie gewohnt über http://localhost:8080/addnumbers?wsdl

WAX-WS Handler

  • Logical Handler – Unabhängig vom Protokoll, Zugriff auf Nachrichteninhalt
  • SOAP HAndler – Zugriff auf vollständige Nachricht + SOAP HEader

Remote Persistent Objects

  • Client <-> Hibernate JPS Service <-> POJOs
  • Annotationen: @Stateful @WebService @Adressing
  • Zugabe Annotation: @Entity = JPA! reicht aus für die Kennzeichnung als persistentes Objekt

JAX-WS und Java 6

  • kein ANT Task vorhanden. Wenn Einsatz mit ANT geplant muss die Standalone-Version verwendet werden
  • meist ältere Versionen. Bei der Erstellung von JRE’S wird jeweils der Snapshot des JAX-WS-Repositorys verwendet, was bei aktueller Entwicklungsgeschwindigkeit schnell outdated sein kann
  • Update über Java Extensions Mechanismus möglich
  • Besserung in Java 7 (Modulkonzept) in Sicht (?)

thanks to Andreas Holubek! Great!

Kategorien: JAX 07 · Java

JAX 07: Bitte kein torrent laufen lassen

April 26, 2007 · Kommentar schreiben

Moin Notebookbenutzer! Hat da jemand seinen Emule oder bittorrent noch am laufen? Das WLAN ist heute extrem lahm und die Latenzzeit liegt irgendwo bei 2,5 Sekunden(!). In Saal 1 sind gut 80 Notebooknutzer, weit weniger als bei anderen Sessions. Und bislang hat die Infrastruktur ja wunderbar funktioniert. Also: Emule @ home, Blog @ JAX :-)

Kategorien: JAX 07

JAX 07: Session: Apache Derby

April 25, 2007 · Kommentar schreiben

Geschichte

Die Software wurde ursprünglich von der Firma Cloudscape Inc., in Oakland, Kalifornien unter dem Namen JBMS entwickelt. Die erste Version wurde 1997 veröffentlicht. Das Produkt wurde später in „Cloudscape“ umbenannt.

1999 wurde Cloudscape von der Firma Informix Software Inc. gekauft, deren Datenbanksparte 2001 von IBM übernommen wurde. 2004 übereignete IBM die Cloudscape-Software der Apache Software Foundation unter dem Namen „Derby“ als OpenSource Software.

2006 wurde Derby als Java DB in Java 6 integriert.

Benefits

  • Einfache Installation, Handhabung, Nutzung, Entwicklung
  • Embedded Database
  • Plattforumunabhängig
  • keine (aktive) Administration (Admin via JDBC)
  • small footprint (ca 2mb)
  • kostenlos (Apache 2.0 License)
  • ODBC Support

Apache Derby <- IBM Cloudscape

  • JDBC-Driver by IBM (ODBC driver for free)
  • support by IBM
  • graphical installer by IBM (doh!)
  • samples, documentation (multilaguage), errorcodes by IBM
  • same sourcecode! IBM copies souce code and use it for own product build(!)

Overview

  • embedded? runs in the VM
  • embedded? (2) embedded jdbc driver
  • transaction support
  • multi-user, multiconnection, thread safe
  • deadlock detection
  • crash recovery / backup / restore / softupgrade
  • multiple database instances
  • encryptet databases – use Blowfish, DES, AES etc as you like (!!!)

SQL Language Support

  • completly support SQL 92 / 99 / 2003 (!)

Tools + Size

  • derby.jar: 2mb
  • derbytools.jar
  • derbynet.jar
  • derbyclient.jar
  • memory usage: ca 4 MB Heap

Limitations

  • no support for multiprocessors
  • database ist only one directory
  • 20-30 simultanous connections
  • 100-500 updates per second

Installation

  • just only put derby in the classpath…
  • myDB / services.properties: config file für database
  • use derby.properties for autorizing, authentification
  • Usage / Connection
  • URL: jdbc:derby:mydb;user=someuser…..
  • jdbc:derby:shutdown -> stop database
  • jdbc:derby;upgrade=true -> update db for new version
  • backup: copy the directory

Tools

  • Eclipse W/DTP
  • tools: sysinfo, ij, dblook

Usage

  • ab Java 6 (java 1.6.0) bruach der Classloader nicht mehr verwendet werden. Der Treiber wird bei angabe des Connection Strings automatisch geladen.

Links:

  • http://db.apache.org/derby/
  • http://db.apache.org/derby/quick_start.html

thanks to Frank Pienta 

Kategorien: JAX 07 · Java

JAX 07: Session: Apache Tomcat

April 25, 2007 · Kommentar schreiben

Konfig Apache:

  • httpd.conf: „Include conf/mod_jk.conf“
  • mod_jk.conf: Definition der Worker, Tomcat-Nodes etc

Konfig Tomcat:

  • server.xml: connector-Tag, Properties port=“8009″ + protocol=“AJP/1.3″
  • > Angabe der Engine-Name + jvmRoute zur Erkennung, Load Balancer kann so eine Session immer mit dem gleichen Node verbinden

… many hand written stuff…

Links:

thanks to Peter Roßbach! (www.objectpark.de)

Kategorien: JAX 07 · Tomcat

JAX 07: individuelle Kältesteuerung!

April 25, 2007 · Kommentar schreiben

ich wurde erhört! Heute kam vor der ersten Nachmittagssession tatsächlich jemand vom Orga-Team und hat nach dem Wohlbefinden des Auditoriums gefragt. Toll & gut zu wissen dass sich die Nackenverspannung wenigstens dynamisch modulieren lässt *gg* . Hier noch schnell das Klima in Wiesbaden: draußen: ca 30 Grad = definitiv zu heiß. Drinnen: optimal!

Kategorien: JAX 07

JAX 07 ist Hype-Anfällig.

April 25, 2007 · 3 Kommentare

Auf der JAX wird nun auch noch professionell gepokert. Was finden die Leute nur am Glücksspiel? Es gibt so schöne viele Spiele, aber alle Welt will wohl gerade pokern. Aber so ist das wohl in dieser schnellebigen Welt: es wird (planlos) auf jeden Hype aufgesprungen, und da wir Developer ja nun schon jeden Java-Hype mitnehmen und ausschlachten, ist es vielleicht auch naheliegend dass der Poker-Hype mitgenommen wird.

Der Spaß findt also am Mittwoch um 20:30 (?) auf der JAX statt. Ohne mich.

Kategorien: Container · JAX 07

JAX 07: Session: Apache Trinidad – 1st Class JSF

April 25, 2007 · 1 Kommentar

Trinidad ist ein Framework

  • Render Kit für HTML + Ajax
  • Beinhaltet Dialoge, optimierte Komponentenspeicherung
  • Maven 2 Faces – Plugin
  • Personalisierung / Layout-Anpassungen
  • Skinning: CSS-Eigenschaften

Historie

  • Trinidad wurde ursprünglich von Oracle geschenkt
  • Eingliederung in Apache MyFaces
  • Seit Sonntag, 22. April 2007, nicht mehr im Inkubator! Trinidad ist nun eine „offizielle“ Apache MyFaces Komponentenbibliothek
  • Lizenz: Apache 2.0

Neuerungen in Trinidad

  • Menu Model Abstraction
  • Maven 2 Faces Plugin
  • >> generiert Komponenten, Tags, XML-Files
  • Unterstützung von Facelets
  • CSS-Styles / Skinning ist möglich
  • Personalizaton Framework ist enthalten

Core Components (not complete)

  • tr:breadCrumbs – Navigation
  • tr:chart – Diagramm (wird vollständig per Vekorgrafik gerendert!)
  • tr:chooseColor – Farbeingabe
  • tr:chooseDate – Datumseingabe
  • tr:document – Seitencontainer, generiert die Elemente html, body und form.
  • tr:goButton & tr:goLink – Buttons / Links ohne Navigation
  • tr:icon – Skin
  • tr:image – Bild
  • tr:importScript – Script Imports
  • tr:inputFile – Upload
  • tr:navigationPane – Tabs, Bars oder Buttons als Navi-Leiste
  • tr:objectMedia – Multimedia-Inhalte
  • tr:inputNumberSpinbox – rauf/runter Pfeile, min / max-Values
  • tr:page – Layout
  • tr:panel* – verschiedene Layout- udn Visualisierungskomponenten
  • tr:poll – nutzt tr:progressIndicator, Partals Reload der Seite, progressIndicator triggert tr:poll und erzeugt Updates der Daten, tr:poll besitzt timer und bringt Daten ins GUI. „PPR“: Partial Page Rendering
  • tr:select* – Vielzahl an Auswahl-Komponenten
  • tr:seperator – Seperator (zB in Menüs, Select-Comps…)
  • tr:table – Table, mit Scrolling bereits enthalten
  • tr:train – Rendert Navigation
  • etc

Verwendung von PPR (Partial Page Rendering)

  • autoSubmit – für input-Komponenten, um eine action abzufeuern
  • partialSubmit – für command-Komponenten (link / button)
  • partialTriggers – für listener, beziehen sich auf eine Komponente (connect per Properties id / partialTriggers)
  • Alternativ: eine gewöhnliche Komponente in einem Poll ( tr:poll ) einfassen.

Dialog Framework

  • dialog:wizard, useWindow-Attribut setzen
  • Darstellung der Seite (nach Request) per Navi-Regel in einem eigenen (Browser-)Fenster

Links:

  • Sample App: http://code.google.com/ …trinidad

thanks to Mathias Weßendorf :)

Kategorien: JAX 07 · JSF · Java · MyFaces

JAX 07: die Jax webzweinullt total!

April 24, 2007 · Kommentar schreiben

Es wurde Abend, es wurde morgen, der zweite Tag. Das Orga-Team der JAX leistet wieder mal ganze Arbeit, es klappt einfach alles! Von allen jaxxen – meine erste war noch seinerzeit in Mörfelden – ist dies (bislang) die beste, und das obwohl erst Dienstag Mittag ist!

Einzig und allein eine kleine Erkältung und einen verspannten Nacken hab ich davongetragen – andererseits ist es ja auch gut das die Klimaanlage so gut funktioniert.

Das Orga-Team fährt die Web2.0-Schiene fast in Perfektion: Mitbloggen, ein eigener JAX-Blog, Flickr-Group… nur die Übertragung in YouTube fehlt noch.

Kategorien: JAX 07

JSF Bibliotheken manipulieren (@ JAX 07)

April 23, 2007 · Kommentar schreiben

  • Bekannt: Apache MyFaces, Sun RI
  • Aufsätze: Apache Shale, Seam, Ajax4JSF (Interaktion zwischen Ajax und JSF), Facelets
  • Komponenten-Bibliotheken: Apache MyFaces Tomahawk / Trinidad / Tobago, ICEFaces, Rich Faces, etc…

Rederklassen und Komponenten sind austauschbar!

  • Renderer implementieren Konvertierungen, De- und Encoding…
  • In der „faces-config.xml“ kann der Renderer ausgewechselt werden
  • Komponenten enthalten Eigenschaften, aber auch selbst En- / Decoding, Validierung und Konvertierung

Auch Kernklassen sind austauschbar. Zum Beispiel der Navigation Handler, State Manager, View Handler, Variable Resolver etc…

Kategorien: JAX 07 · JSF · Java · MyFaces

Java Persistence API Basics (@ JAX 07)

April 23, 2007 · Kommentar schreiben

  • Standard für Persistenz in Java; Teil von EJB 3.0 (JSR220); RI = Toplink Essentials (Glassfish)
  • Vereinfachung von EJB 2.0
  • Java5 Annotations (und XML…)
  • ORM-Frameworks: Eclipse Link (Oracle Toplink), Hibernate (JBoss), OpenJPA & Cayenne (Apache)

Annotationen:

  • @Entity für Class, @Generated für Felder
  • @Temporal, @OneToOne für eigene Felder und Beziehungen

Spring Framework:

  • Apache 2.0 License
  • Als eine Art „Abhilfe“ für Java EE (J2EE) -> Einfach!
  • Sehr mächtiges Tool (AOP, Transactionsm DI, JDBC), Anbindung an verschiedenFrameworks (JSF, Struts, EJB, Hibernate, AspectJ…)
  • Direkter Support vorhanden für Hbernate, OpenJPA, Toplink
  • Integration in JSF: JSF View -> JSF Bean (View Controller) -> Service -> DAO/Repository

Anbindung:

  • Deklaration eines EntityManager via konkreter Implementierung einer Bean
  • Dann: TransactionManager deklarieren, direkte Übergabe an EntityManagerFactory-Bean

Links:

Kategorien: JAX 07 · JSF · Java · MyFaces

Facelets – Basics (@ JAX 07)

April 23, 2007 · Kommentar schreiben

Intro:

  • Einsatz möglich in JSF 1.2. In JSF 2.0 wird voraussichtlich ein Templating-Ansatz von Haus aus vorhanden sein.
  • Verschiedene Komponenten können zusammengefasst als neue Komponente definiert werden, was wesentich schneller funktionieren kann als eine eigenen neue Komponente zu schreiben.
  • Nur Doc-Type „xhtml:transitional“ möglich

Konfiguration:

  • in web.xml oder über Wildcard (siehe Doku)

Templating:

  • Template-Datei wird angelegt, z.B. „/myTemplate.xhtml“
  • Aufbau wie JSP-Seite mit HTML-Tags undeinigen Sonderfeldern für die Faclets-Steuerung
  • Tag: „<ui:insert>
  • Neue Seiten werden einfach als xhtml-Content angelegt und via faces gerendert. Dabei wird sich, wie in der Content-Datei via Tag „<ui:comosition>“ angegeben, auf das (Master-) Template bezogen.

Komponenten verbinden / neue Komponenten:

  • Definition von neuen Komponenten auf Basis der herkömmlichen Komponenten, z.B., „verkleben“ von „h:outputLabel“ und „h:inpuText“.
  • xhtml-Datei beschreibt die neue Komponente (im Ordner „WEB-INF“)
  • Angabe weiterer Eigenschaften in Definitionsdatei möglich
  • Definition einer Taglib für die neue Komponente, z.B. jax.taglib.xml.
  • In der Taglib: Angabe des Namespaces, Tagname, Sourcefile etc
  • Die Taglib wird anschliessend noch in der web.xml registriert
  • Komponente kann nun durch Einbinden des Namespaces via „xmlns:“ in den Content-Files genutzt werden

Kategorien: JAX 07 · JSF · Java · MyFaces

JAX 07: (JSF-Ajax) Maven für alle

April 23, 2007 · Kommentar schreiben

Maven für alle!Die Jax lässt sich mal wieder sehr gut an. Nach 2 Jahren Abstinenz tut es gut, unter 1600 Entwicklern (ok, heute, am Montag, sind wohl nur ca 600 hier) zu sein und sich als Teil einer großen Bewegung zu sehen.

Die erste Installations-Session ist gerade durch. Knapp 80 Teilnehmer der JSF – Ajax – Session haben mal fix einen Grundkurs in Maven bekommen und Ihre Notebookplatten mit knapp 500mb an Session-Files zugepflastert. Nun steigt die Spannung was wir mit den Files machen…

und jetzt alle gemeinsam: mvn clean jetty:run

Kategorien: JAX 07

JAX 07: Radiosender gesucht

April 23, 2007 · 1 Kommentar

Radio hören in Hessen…. ein Spießrutenlauf! Heute Mogen hat mich auf dem Weg vom Hotel zu den Rhein Main Hallen HR3 begleitet – eine Zeitreise in die 70er und 80er… Morgen versuche ich einen anderen Sender.

Kategorien: Container · JAX 07