Title: Inside Apache Geronimo 1.1 - What makes it special?
1Inside Apache Geronimo 1.1 - What makes it
special?
- Rakesh Midha
- IBM Software Labs, Bangalore
- midharakesh_at_in.ibm.com
- midha.rakesh_at_gmail.com
2Goal
- Show case Geronimo open source story
- Where it fits in Industry and Enterprise
- How it facilitates easy development and
deployment - Understand Geronimo 1.1 additions
- Get you hooked with Geronimo
3Agenda
- Geronimo - An Introduction
- Why Geronimo?
- What makes it Special?
- Where does it fit well?
- Geronimo Architecture and Components
- Geronimo 1.1 Whats New?
- Getting Started
- Administration and Configuration
- Development Enviornment
- Quick Application Development
- Getting Involved
- Summary, QA
4Geronimo - An Introduction
5What is Apache Geronimo?
- Open source J2EE application server project
developed by the Apache Software Foundation. - Benefits from the efforts of collaborative
development by an open community of Java
developers worldwide.
- Apache-licensed open source application server
- Highly customizable
- Small footprint
- Community-driven
Brings together leading technologies from the
broad open source community to support J2EE
6Apache Geronimo
- Geronimo
- Apache Geronimo an Apache Software Foundation top
level project that is aimed at creating a world
class, free, application server. - It is made up of over 30 best of breed open
source packages (some not under the Apache
domain). - The Geronimo kernel provides the common security,
deployment, administration, management, and
life-cycle services for these components. - Geronimo reached official J2EE 1.4 certification
in Milestone 5 in Oct 2005.
7Geronimo Open Source Packages
- Howl
- JDBM
- JDom
- Jetty
- Juddi
- Junit
- Mx4j
- OpenEJB
- ActiveIO
- ActiveMQ
- Scout
- Antlr
- ASM
- Axis
- Castor
- Concurrent
- Apache Directory
- Commons
- Beanutils
- Collections
- Digester
- El
- Fileupload
- I/O
- Lang
- Modeler
- Primitives
- TranQl
- Wsdl4j
- Xmlbeans
- Xpp3
- Xstream
- Xfire
- Derby
- Pluto
- Slf4j
- Oro
- Servicemix
- Spring
- Stax
- Tomcat
- Regexp
8Geronimo History and Progress
- Geronimo passes J2EE Certification Test
Suite
- Apache Geronimo Project formed
- IBM acquires Gluecode Software
- Milestone 5 released, full J2EE certification
August2003
August2004
August2005
June2005
Oct2005
May2005
Jan2006
June2006
In Plan
9Why Geronimo?
10Geronimo Key Features
- J2EE 1.4 Certified
- Certification from Sun Microsystems in October
last year - Certified on the Sun JDK 1.4.2, works with JDK
1.5 without CORBA - Option for Jetty or Tomcat as a Web Container
- Geronimo supports both Jetty as well as Tomcat.
Separate package for download, available for
Jetty and Tomcat. - Database Support
- Comes with Apache Derby database
- Also supports JDBC enabled databases using a
connector framework from TranQL - Eclipse Web Tools Project support
- Integrated development environment for creating,
deploying, and debugging directly against
Geronimo - Runtime customization
- Advanced micro-kernel architecture enables
runtime customization to save systems resources
and improve performance - Allows for greater flexibility in creating
different server personalities in the future
11Geronimo Key Features
- Centralized configuration and control
- Easy to use Web Console
- Small Footprint 60MB
- Easy access - downloadable in minutes
- Easily embeddable in customer or ISV stack
- Liberal product license
- Apache open source (ASF) license
- Flexible and rapid deployment across multiple
configurations - Directory-based hot deployment
- Local and remote deployment through command line,
console, and IDE - Improved reliability for most commonly deployed
applications - Web-tier clustering
12What makes it Special?
13Geronimo Key Design Principles
- Simple
- Easiest platform to development on, obtain, use,
and service. - Easy to understand, invisible to the customer.
Application centric. - Easy to configure and change.
- Embedded documentation, service functions, user
interfaces, etc. - Default setting will get you running.
- Flexible
- Can plug-in function while that application
server is running. - J2EE function is just one of the personalities
that can be plugged in. - Geronimo becomes the platform that
partners/customers think when building apps. - Need to be the Eclipse of the tooling world.
- Reliable
- Appliance like reliability. Never fails.
- Startup and recycle time should be minimal.
- Customer never sees or cares about the server it
is about the application.
14Geronimo Technical Advantage
- Enchilada of best of breed open source products
- GBean Architecture
- A pluggable framework
- Modular Architecture
- Tomcat has web features but it lacks other J2EE
features - Low memory and resource requirement
- Better web performance as compared to other open
source application servers - True open source community driven
- Strategic commitment from IBM, Covalent, Chariot
and other big players - Very Active community and dev/user list
- Optional Support from IBM
15Geronimo Still Why?
- Its all Free!!!
- Free Application Server
- Free Development, Debugging environment
- Free Management tools
- Free resources like database, messaging
- Free enterprise class documentation
- Free Sample applications
- Free educational material like articles,
tutorials
16Where does it fit well?
17Where does this fit in the Enterprise?
- Apache Geronimo are excellent positioned as
developer runtimes - Integration into Eclipse helps to reduce software
licenses - Small footprint
- Single User Environments
- Low end SMB companies
- Quick, frictionless access to application server
technology with no up-front costs - Departmental Applications in Enterprises
- SMBs and departmental applications are a good
target for this technology - Not quite ready to run your 4,000 AppServer farm
- Advanced monitoring, integration with commercial
/ open source monitors not quite there yet.
18Today With Tomcat plus other stuff you do
yourself
- Your developers have a job to do write your
killer app! - They chose Apache Tomcat because it helps them
build apps quickly - But Tomcat doesnt have web services support, a
security framework, or messaging so your
developers added those components and integrated
them into the stack - Then your rock star developer wrote some
app-specific service and integrated that into the
stack - Turns out your app needs clustering too, so they
throw that into the stack - but the web services component they got doesnt
do clustering luckily theres a newer version of
that out now, so they get the new version and
integrate THAT into the stack - Now your staff is maintaining your killer app,
Apache Tomcat, the web services component,
messaging, security, clustering, AND your custom
components
build apps quickly?
What happened to building apps quickly??
Developers maintain all this!
JMS Messaging
Other services you need/write
SOAP/Web Services (Axis)
Security / Authentication
SOAP/Web Services (Axis)
Web Tier Clustering
Custom Integration
Custom Integration
19Now, just much easier (oh, and future-proof)!
- What if you could start with Tomcat
- Extend Tomcat with pre-integrated features
services you need most (read someone other than
you did the tedious work) - Welcome to a little secret we like to call
Tomcat, use Apache Geronimo - Its fully extensible, and its built on the
innovative open-source Apache Geronimo kernel - Plus all the same Apache Tomcat youre already
using - Plus the leading components you want to use
pre-integrated and tested (and the ability to
turn off what you arent using) - Plus the support you need from IBM
Apache Geronimo
20Geronimo Architecture and Components
21Geronimo Architecture - GBean
- The Geronimo framework provides a set of
cooperating classes, called GBeans, for combining
an arbitrary set of components into a system - Everything in Geronimo framework is GBean
- Lightweight kernel provides central integration
based on Inversion of control pattern. - Manageable at runtime using JMX, JSR-77
- Example
- An EJB container
- Web Module
- It must be aware of every EJB in the system.
- It registers a dependency on any EJB GBean
- An EJBs are added to the system
- The Geronimo kernel recognizes the relationship
and injects information from the EJB GBean into
the EJB container GBean where it updates its
configuration state. - This action is called dependency injection.
- A J2EE web module that contains servlets and uses
EJB - It depends on the web container and the EJB
container - When its GBean is started, the Geronimo kernel
recognizes the dependency and starts the web
container and the EJB container first
22Geronimo Kernel
- Kernel
- Core of the component model
- Provides central integration point
- Binds all the subsystems
- Based on Inversion of Control /Injection Pattern
- Geronimo Beans
- GBean is a manageable unit in the Geronimo
framework - To add new component to the server, you deploy
the collection of GBeans - A deployment plan is an XML document that
provides server specific attribute values - GBeans can hold states and can define
relationships amongst them - GBean life cycle is managed by the kernel.
- A java class can be wrapped to become a GBean
- GBeans are used to tie all the open source
projects in Geronimo ( Derby, Tomcat, Axis,
OPenEJB . ) - GBean can notify events.
23Geronimo components
Specification required for J2EE certification Area of coverage Project or code used by Geronimo
Servlets 2.4JavaServer Pages (JSP) 2.0 Web tier container with support for JSPs and servlets Jetty and Tomcat
Enterprise Java Beans (EJB) 2.1 EJB container OpenEJB
Java Message Service (JMS) 1.1 Messaging service ActiveMQ
Java Naming and Directory Interface (JNDI) 1.2.1 Directory service/naming API Custom code implementation
Java Transaction API (JTA) 1.0 Transactions Custom manager with High-speed ObjectWeb Logger (HOWL) for transaction logging, XA supported, evolving to Java Open Transaction Manager (JOTM)
JavaMail 1.3 Mail Custom coding
JavaBeans Activation Framework (JAF) 1.0 Activation -- handling html/text/gif/jpg MIME types, primarily for JavaMail attachments Custom coding
JSR 77 -- J2EE Management 1.0 Manageability Custom coding with MX4J
JSR 88 -- J2EE Deployment 1.1 Deployment and configuration -- cross-vendor server deployability Custom Code
JMX 1.2 Manageability MX4J
24Geronimo components - cont
Java Data Access API (JDBC) 3.0, 2.1 Database Code from TranQL
Java API for XML Processing (JAXP) 1.2 SAX, DOM APIs third-party SAX, DOM, XSLT engine pluggability JDK support where applicable, and Apache Xerces
J2EE Connector Architecture (J2CA) 1.5 Connector Custom coding. Includes JMS resources and JDBC pools.
JSR 109 -- Implementing Enterprise Web Services 1.1 Web services Apache Axis
Java API for XML-based RPC (JAX-RPC) Web services Apache Axis
SOAP with Attachments API for Java (SAAJ) 1.2 Web services Apache Axis
Java API for XML Registries (JAXR) 1.0 Web services Apache Scout
JSR 115 Java Authorization Contract for Containers (JACC) Security -- authorization and authentication Custom development using JDK's JAAS support
Internal database Database Derby
Persistence mechanism Database Unified substrate for CMP and Beans/POJO oriented schemes over TranQL
Interoperability TCP/IP, HTTP1.1, SSL3.0, TLS 1.0, SOAP 1.1, WS-I Basic Profile 1.0 CORBA - IIOP, RMI-IIOP, EJB Interop, CORBA Interop Naming Service, JRMP JDK support (that is, ORB and JRMP), support from other packages, and custom code
25Deployment Framework
- Each Component has a GBean and deployment plan.
- Plan is an xml file containing properties of
GBean - Server is built using j2ee-server-plan.xml
ltgbean name"JettyWebConnector"
class"org.apache.geronimo.jetty.connector.HTTPCon
nector"gt ltattribute name"host"gtlocalhost"
lt/attributegt ltattribute
name"port"gt8080lt/attributegt ltreference
name"JettyContainer"gtltnamegtWebContainerlt/namegtlt/r
eferencegt ltattribute name"maxThreads"gt50lt
/attributegt ltattribute name"minThreads"gt1
0lt/attributegt lt/gbeangt
- Can also deploy plan to running server using
deployer - For modules you need specific file as deployment
plan - Web Application (WAR) - WEB-INF/geronimo-web.xml
- Enterprise Application (EAR) META-INF/geronimo-app
lication.xml - Enterprise Java Beans (JAR) META-INF/openejb-jar.x
ml - J2EE Connectors (RA) META-INF/geronimo-ra.xml
- Client Application META-INF/geronimo-application-c
lient.xml
26Geronimo 1.1 Whats New?
27Geronimo 1.1
- Updated deployment plan
- Running with JDK 1.5 without CORBA support
- Improved scalability, portability and overall
organization - Enhanced Web Console
- Memory utilization graphics, Live console graph
- Thread Pools statistics
- Remote HTTPd configuration wizard and plugins
- JMS resource wizard
- Keystore manger
- Improved Hot deployment
- Application storage in repository
- Enhanced SMTP support
- Little-G
- Plugin architecture
- In-place deployment
28Geronimo 1.1-Little-G
- Lightweight distribution of geronimo available
for both jetty and tomcat - Small space requirement 20MB and smaller memory
footprint - It includes a WebContainer, Transaction Manager
and some other essential elements of Geronimo. - Not J2EE compliant
- Can be upgraged for specific requirement like
JMS, J2EE etc using plugins.
29Geronimo 1.1-Plugins
- A Geronimo plugin is a new packaging mechnism for
geronimo modules - Geronimo applications, server features, and
integrated products can be distributed as
Geronimo plugins. - Plugins are easy to install, automatically
download any dependencies, and do not require
server restarts. - Using the plugin infrastructure, applications or
modules can be copied from one Geronimo
installation to another - Developer to Developer
- Development environment to production environment
- Plugin stays in Maven 2 repository and
automatically downloads dependencies from other
repositories - Web console can be used to create plugins
30Plugin web console
31Getting Started
32Quick Start
- Available for download from http//geronimo.apache
.org/downloads.html - Linux, windows and MacOS installation in tar/zip
format with jetty and tomcat available - System Requirements
- Redhat Enterprise Linux 3.0 or 4.0, Suse Linux
Enterprise .9 - Microsoft XP with SP2
- 120MB Disk Space
- 128MB RAM (256MB Preferred, depends upon deployed
Applications) - Installation
- Windows
- Install JDK, set JAVA_HOME and simply unpack
geronimo--j2ee-1.1.zip - Linux
- Install JDK, export JAVA_HOME and simply unpack
geronimo--j2ee-1.1.tar.gz
33Server Administration
- Starting a Server
- From application launcher, execute startup.bat or
startup.sh, or run java jar bin\server.jar - The server will display the TCP/IP ports where it
is listening for requests - You can confirm readiness of server by navigating
to welcome page http//localhost8080/console and
https//localhost8080/console in browser - When Prompted enter System/Manager as
userid/password - Startup options -quite, -v, -vv
- Stopping a Server
- From Application Launcher, Execute shutdown.bat
or shutdown.sh, or run java jar shutdown.jar - Stop server using Web Console
- Press Ctrl-C at the Server Started window
34Tools and Commands
- Deploy command - deploy.bat and deploy.sh
- java -jar deployer.jar general_options
ltcommandgt command_options - deploy general_options ltcommandgt
command_options - Commands available
- 1. Common Commands
- deploy
- redeploy
- start
- stop
- undeploy
- 2. Other Commands
- distribute
- list-modules
- list-targets
- 3. Configuration jar
- install-plugin
- search-plugin
- General options
- --uri --host --port --driver --user
35Administration and Configuration
36Web Console
- The administration console provides a convenient,
user friendly way to administer many aspects of
the Geronimo Server. - Can be viewed in a browser at http//localhost808
0/console - Default password is system/manager
- It can be used for server management, and
viewing/editing following information - Server/JVM usage statistics
- Server logs
- Control server functionalities
- Web Server configuration
- Database, JMS Resource configurations
- Thread pool, database pool, J2EE connectors
management - Apache HTTP, Derby maintenance
- Application/ Modules/ Plugin management
- Security realms management
37Web Console view
38Deploying JDBC and JMS resources
- Database Pool is deployed as a connector in
Geronimo - Database Connection pool can be configured at the
server level, application level or part of single
application module, as default - Configuring Database pool
- Create Database Pool deployment plan containing
configId, parentId, dependency, uri,
connectionfactory-interface, name and
configurable properties like Driver, user, passwd
etc - Deploy pool as connector
- Server wide
- java -jar bin/deployer.jar deploy
database-pool.xml \ repository/tranql/rars/tranql-
connector-1.0.rar - Application Scoped
- Create application.xml with
- Create geronimo-application.xml
- jar -tf my-app.ear my-web-app.war my-ejbs.jar
tranql-connector-1.1.rar database-pool.xml
META-INF/application.xml META-INF/geronimo-applica
tion.xml - Client Module Scoped
- A module scoped connection pool is declared in
the geronimo deployment plan for the module
Pool Type Multiple Appl. Multiple Modules Client Module
Server-wide Yes Yes No
Application-scoped No Yes No
Client Module-scoped No No Yes
39Deploying JDBC and JMS resources - Cont
- JDBC Resources
- In Modules Deployment descriptor ie web.xml Add
resource ref - ltresource-refgt
- ltres-ref-namegtjdbc/DataSourcelt/res-ref-namegt
- ltres-typegtjavax.sql.DataSourcelt/res-typegt
- ltres-authgtContainerlt/res-authgt
- ltres-sharing-scopegtShareablelt/res-sharing-scopegt
- lt/resource-refgt
- For external references deployment plan is
required with following info - ltnamingresource-refgt
- ltnamingref-namegtjdbc/DataSourcelt/namingref-name
gt - ltnamingresource-linkgtSystemDatasourcelt/namingre
source-linkgt - lt/namingresource-refgt
- In Application code lookup datasource and use it.
- InitialContext ctx new InitialContext()
- DataSource ds ctx.lookup("javacomp/env/jdbc/Dat
aSource") - Connection con ds.getConnection()
- JMS Resources
- The default Geronimo server starts with ActiveMQ
as messaging server
40Geronimo Classloader
Bootstrap, Extensions JVM Classes System
Geronimo System Server Critical classes and
services for J2EE EAR EAR Classloader Dependency
loaded as part of EAR Classloader.
41Troubleshooting
- Logging
- Administration Console provide 4 portlets for
configuration and viewing the servers log - Log Manager to specify log configuration file,
Log Level, file size and Refresh Period - Server Log Viewer to view server log and set
filters for refining results displayed - Derby Log Viewer to view Derby server logs
- Web Access Log Viewer to view web server logs for
both tomcat and jetty - Detailed log4j configuration settings can be done
directly in server-log4j.properties,
deployer-log4j.properties and client-log4j.propert
ies file
42Security
- Security
- In Geronimo you can define and activate multiple
security realms build around JAAS - Each realm can authenticate user, provide set of
principles to authorize user - Each realm is a deployed as a component via GBean
- Default plan in doc/plan/j2ee-security-plan.xml
- In order to enable https access to web
applications, Geronimo requires keystore.
43Development Enviornment
44Development Environment
- Development Tools
- Eclipse plug-in for creating, deploying, and
debugging Geronimo applications - Plug-in provides integration between Eclipse Web
Tools Platform and Geronimo - Eclipse Web Tools Platform (WTP) project extends
the Eclipse platform with tools for developing
J2EE Web applications - http//www.eclipse.org/webtools/
- Plugin available for download from geronimo
website - Integrated test environment
- Eclipse plug-in provides integrated test
environment for Geronimo
45Development Environment views
46Quick Application Development
47Quick first web application
- Create HelloWorld.jsp
- Create a plain text file in the ltapp_homegt
directory named HelloWorld.jap and copy the
content - Create Standard J2EE complaint deployment
descriptor web.xml in ltapp_homegt/WEB-INF
directory
lt_at_ page contentType"text/htmlcharsetUTF-8"
language"java" gt lthtmlgt ltheadgt ltjspuseBean
id"datetime" class"java.util.Date" /gt
lttitlegtHello IBM Geronimo Version 1.1lt/titlegt
lt/headgt ltbodygt lth2gtWelcome to Geronimo
Version 1.1lt/h2gt ltpgtCongratulations on running
this simple application on datetime.lt/pgt lt/body
gt lt/htmlgt
ltweb-app version1.0" xmlns"http//java.sun.com/
xml/ns/j2ee"gt ltwelcome-file-listgt
ltwelcome-filegtHelloWorld.jsplt/welcome-filegt
lt/welcome-file-listgt lt/web-appgt
48Quick first web application cont.
- Create Geronimo plan
- Although this sample application does not require
it, you can still create Geronimo deployment plan
to get first view. - Create geronimo-web.xml in WEB-INF directory
- Package the application
- From command prompt, go to ltapp_homegt directory
and execute - jar cvf HelloWorld.war
- Deploy the application
- You can use Geronimo web console to deploy and
run application - From command line your can use the deployer.jar
to deploy application using - java -jar bin\deployer. jar --user system
--password manager deploy sample\HelloWorld.war
- Test the application
- Test the application by pointing a Web browser to
the following URL - http//localhost8080/hello
lt?xml version"1.0"?gt ltweb-app
xmlns"http//geronimo.apache.org/xml/ns/web"
xmlnsnaming"http//geronimo.apache.org/xml/ns/
naming" configId"HelloWorld"gt
ltcontext-rootgt/hellolt/context-rootgt lt/web-appgt
49Getting Involved
50What more? Geronimo 1.2
- The next version of Geronimo is focused on
several areas, including - Enhance the performance and usability of the
server. - Improve cross-platform compatibility.
- Improve integration with third-party development
tools and server products. - Enhance configuration, administration and
management tools. - Improve clustering support for web containers and
EJBs. - J2EE 1.5 EJB 3, Web 2.5
- Portal Server plugin
51Getting Involved
- Geronimo home page
- http//geronimo.apache.org/
- Future road map
- http//issues.apache.org/jira/browse/GERONIMO?repo
rtcom.atlassian.jira.plugin.system.projectroadma
p-panel - Jira Bug tracking
- http//issues.apache.org/jira/browse/GERONIMO
- Subversion source code
- http//geronimo.apache.org/svn.html
- Mailing lists
- user_at_geronimo.apache.org
- dev_at_geronimo.apache.org
- IRC
- Irc.freenode.net - geronimo
- Wiki
- http//cwiki.apache.org/geronimo
- Documentation
- http//geronimo.apache.org/documentation.html
52SummaryQA