Einträge werden als ‘JAX 07’ kategorisiert
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
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
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
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
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
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
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
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
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
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
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
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
- 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
- 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
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
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
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