Transcript Slide 0
Inside Apache Geronimo 1.1
- What makes it special?
Rakesh Midha
IBM Software Labs, Bangalore
[email protected]
[email protected]
Goal
• 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
1
Agenda
•
•
•
•
•
•
•
•
•
•
•
•
2
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, Q&A
Geronimo - An Introduction
3
What 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
Brings together leading technologies
from the broad open source
community to support J2EE
4
Small footprint
Community-driven
Apache 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 lifecycle services for these components.
Geronimo reached official J2EE 1.4 certification in
Milestone 5 in Oct 2005.
5
Geronimo Open Source Packages
6
Howl
TranQl
JDBM
Wsdl4j
JDom
Xmlbeans
Jetty
Xpp3
Juddi
Xstream
Junit
Xfire
Mx4j
Derby
OpenEJB
Pluto
ActiveIO
Slf4j
ActiveMQ
Oro
Scout
Servicemix
Antlr
Spring
ASM
Stax
Axis
Tomcat
Castor
Regexp
Concurrent
Apache Directory
Commons
Beanutils
Collections
Digester
El
Fileupload
I/O
Lang
Modeler
Primitives
Geronimo History and Progress
August
2003
7
August
2004
May
2005
June
2005
August Oct
2005 2005
Jan
2006
June
2006
In Plan
Why Geronimo?
8
Geronimo – 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
9
Geronimo – 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
10
What makes it Special?
11
Geronimo – 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.
It is the ‘intel chip’ for your applications.
Administration is available and easy.
‘Tomcat like’ reputation in open source.
12
Geronimo – 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
13
Geronimo – Still Why?
•It’s 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
14
Where does it fit well?
15
Where 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.
16
Today – With Tomcat plus ‘other stuff’ you do
yourself
1. Your developers have a job to do – write your killer app!
build apps
2. They chose Apache Tomcat because it helps them
buildquickly…?
apps quickly
3. But Tomcat doesn’t have web services support, a security framework, or
messaging; so your developers added those components and integrated
them into the stack
4. Then your rock star developer wrote some app-specific service and
What happened
integrated that into the stack
to building
5. Turns out your app needs clustering
too,apps
so they throw that into the stack
quickly??
6. …but the web services component
they got doesn’t do clustering; luckily
there’s a newer version of that out now, so they get the new version and
integrate THAT into the stack
7. Now your staff is maintaining your killer app, Apache Tomcat, the web
services component, messaging, security, clustering, AND your custom
components
Custom
Integration
17
SOAP/Web
Services (Axis)
Your Killer
App/
Security
JMS Messaging
Authentication
Apache Tomcat
Web Tier
Clustering
Other
services you
need/write
Developers
maintain
all this!
Custom
Integration
Now, just much easier (oh, and futureproof)!
• 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
• It’s fully extensible, and it’s built on the innovative open-source Apache
Geronimo kernel
• Plus all the same Apache Tomcat you’re already using
• Plus the leading components you want to use pre-integrated and tested
(and the ability to turn off what you aren’t using)
• Plus the support you need from IBM
Apache Geronimo
Your Killer App
Apache Tomcat
Security /
Authentication
Geronimo Plug-In Kernel
SOAP/Web
Services (Axis)
Web Tier
Clustering
Fully Integrated & Extensible
Kernel Services
JMS Messaging
Other Optional Plug-ins for EJBs, Transactions, etc.
18
Geronimo Architecture and
Components
19
Geronimo 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
•
•
•
20
• It must be aware of every EJB in the system.
A J2EE web module that contains servlets and uses
• It registers a dependency on any EJB GBean
EJB
• An EJBs are added to the system
It depends on the web container and the EJB
•The Geronimo kernel recognizes the
container
relationship and injects information from the EJB
When its GBean is started, the Geronimo kernel
GBean into the EJB container GBean where it
recognizes the dependency and starts the web
updates its configuration state.
container and the EJB container first
•This action is called dependency injection.
• Kernel
•
•
•
•
Geronimo 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.
21
Geronimo components
22
Specification required for J2EE
certification
Area of coverage
Project or code used by Geronimo
Servlets 2.4
JavaServer 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
Geronimo components - cont
23
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 (JAXRPC)
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
Deployment 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
<gbean name="JettyWebConnector" class="org.apache.geronimo.jetty.connector.HTTPConnector">
<attribute name="host">localhost"</attribute>
<attribute name="port">8080</attribute>
<reference name="JettyContainer"><name>WebContainer</name></reference>
<attribute name="maxThreads">50</attribute>
<attribute name="minThreads">10</attribute>
</gbean>
• Can also deploy plan to running server using deployer
• For modules you need specific file as deployment plan
•
•
•
•
•
24
Web Application (WAR) - WEB-INF/geronimo-web.xml
Enterprise Application (EAR) META-INF/geronimo-application.xml
Enterprise Java Beans (JAR) META-INF/openejb-jar.xml
J2EE Connectors (RA) META-INF/geronimo-ra.xml
Client Application META-INF/geronimo-application-client.xml
Geronimo 1.1 – Whats New?
25
Geronimo 1.1
•
•
•
•
•
•
•
•
•
•
26
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
Geronimo 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.
27
Geronimo 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
28
Plugin web console
29
Getting Started
30
Quick 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-*-j2ee1.1.zip
• Linux
• Install JDK, export JAVA_HOME and simply unpack geronimo-*-j2ee1.1.tar.gz
31
Server 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://localhost:8080/console and https://localhost:8080/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
32
Tools and Commands
• Deploy command - deploy.bat and deploy.sh
• java -jar deployer.jar [general_options] <command> [command_options]
• deploy [general_options] <command> [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
• --password
33
--port
--syserr
--driver
--verbose
--user
--offline
Administration and
Configuration
34
•
Web
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://localhost:8080/console
• Default password is system/manager
• It can be used for server management, and viewing/editing
following information:
•
•
•
•
•
•
•
•
•
35
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
Web Console view
36
Deploying 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
Pool Type
Multiple Appl.
Multiple Modules
Client Module
Server-wide
Yes
Yes
No
Application-scoped
No
Yes
No
Client Module-scoped
No
No
Yes
• 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 METAINF/application.xml META-INF/geronimo-application.xml
•
Client Module Scoped
A module scoped connection pool is declared in the geronimo deployment plan for the module
37
Deploying JDBC and JMS resources - Cont
• JDBC Resources
• In Modules Deployment descriptor ie web.xml Add resource ref
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
• For external references deployment plan is required with following info:
<naming:resource-ref>
<naming:ref-name>jdbc/DataSource</naming:ref-name>
<naming:resource-link>SystemDatasource</naming:resource-link>
</naming:resource-ref>
• In Application code lookup datasource and use it.
InitialContext ctx = new InitialContext();
DataSource ds = ctx.lookup("java:comp/env/jdbc/DataSource");
Connection con = ds.getConnection();
• JMS Resources
• The default Geronimo server starts with ActiveMQ as messaging server
• JMS Server must be running and its GBean is created and deployed
• JMS application resources like connection factories, topics, and queues are deployed
using J2EE connector, which can be used like JDBC resource.
38
Geronimo 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.
39
Troubleshooting
Logging
• Administration Console provide 4
portlets for configuration and
viewing the server’s 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, deployerlog4j.properties and clientlog4j.properties file
40
Security
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/j2eesecurity-plan.xml
• In order to enable https access to
web applications, Geronimo requires
keystore.
41
Development Enviornment
42
Development 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
43
Development Environment views
44
Quick Application
Development
45
Quick first web application
• Create HelloWorld.jsp
• Create a plain text file in the <app_home> directory named HelloWorld.jap
and copy the content
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html> <head>
<jsp:useBean id="datetime" class="java.util.Date" />
<title>Hello IBM Geronimo Version 1.1</title>
</head>
<body>
<h2>Welcome to Geronimo Version 1.1</h2>
<p>Congratulations on running this simple application on ${datetime}.</p>
</body> </html>
• Create Standard J2EE complaint deployment descriptor web.xml in
<app_home>/WEB-INF directory
<web-app version=“1.0" xmlns="http://java.sun.com/xml/ns/j2ee">
<welcome-file-list>
<welcome-file>HelloWorld.jsp</welcome-file>
</welcome-file-list>
</web-app>
46
Quick 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
<?xml version="1.0"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/web"
xmlns:naming="http://geronimo.apache.org/xml/ns/naming"
configId="HelloWorld">
<context-root>/hello</context-root>
</web-app>
• Package the application
• From command prompt, go to <app_home> 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://localhost:8080/hello
47
Getting Involved
48
What 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
49
Getting Involved
• Geronimo home page
• http://geronimo.apache.org/
• Future road map
• http://issues.apache.org/jira/browse/GERONIMO?report=com.atlassia
n.jira.plugin.system.project:roadmap-panel
• Jira Bug tracking
• http://issues.apache.org/jira/browse/GERONIMO
• Subversion source code
• http://geronimo.apache.org/svn.html
• Mailing lists
• [email protected]
• [email protected]
• IRC
• Irc.freenode.net - #geronimo
• Wiki
• http://cwiki.apache.org/geronimo
• Documentation
• http://geronimo.apache.org/documentation.html
50
Summary
Q&A
51