Inside Apache Geronimo 1 1 What makes it

  • Slides: 52
Download presentation
Inside Apache Geronimo 1. 1 - What makes it special? Rakesh Midha IBM Software

Inside Apache Geronimo 1. 1 - What makes it special? Rakesh Midha IBM Software Labs, Bangalore midharakesh@in. ibm. com midha. rakesh@gmail. com

Goal • Show case Geronimo open source story • Where it fits in Industry

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

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

Geronimo - An Introduction 3

What is Apache Geronimo? Open source J 2 EE application server project developed by

What is Apache Geronimo? Open source J 2 EE 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 J 2 EE 4 § Small footprint § Community-driven

Apache Geronimo § Apache Geronimo an Apache Software Foundation top level project that is

Apache 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 J 2 EE 1. 4 certification in Milestone 5 in Oct 2005. 5

Geronimo Open Source Packages § § § § § 6 Howl § Tran. Ql

Geronimo Open Source Packages § § § § § 6 Howl § Tran. Ql JDBM § Wsdl 4 j JDom § Xmlbeans Jetty § Xpp 3 Juddi § Xstream Junit § Xfire Mx 4 j § Derby Open. EJB § Pluto Active. IO § Slf 4 j Active. MQ § 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 ed m or f t ec oj r P re

Geronimo History and Progress ed m or f t ec oj r P re a w e d o E E 2 t of l. J l u S f E e , E t d d c J 2 Sui se o e se a u s a a e l m d d e st le le el G ni e e s r e e e s s se o s r r T a a a 3 a e 5 p n e 4 le le le ire e G e e e u e o n o i n R R to cq on on. 0 R im icat sto he s t 1 2 a c n. . s ti a o rtif ile 1 1 1 ile e r l M p a i V V V e M c B A e i M § § §I § Mertif §G C § c August 2003 7 August 2004 May 2005 d se June August Oct 2005 Jan 2006 June 2006 In Plan

Why Geronimo? 8

Why Geronimo? 8

Geronimo – Key Features • J 2 EE 1. 4 Certified • Certification from

Geronimo – Key Features • J 2 EE 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 Tran. QL • 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

Geronimo – Key Features • Centralized configuration and control • Easy to use Web Console • Small Footprint ~60 MB • 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

What makes it Special? 11

Geronimo – Key Design Principles Simple § § § Easiest platform to development on,

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. § J 2 EE 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 § § § 12 ‘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.

Geronimo – Technical Advantage § Enchilada of best of breed open source products §

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 J 2 EE 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

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 it fit well? 15

Where does this fit in the Enterprise? • Apache Geronimo are excellent positioned as

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 App. Server 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

Today – With Tomcat plus ‘other stuff’ you do yourself 1. Your developers have a job to do – write your killer app! build apps quickly…? 2. They chose Apache Tomcat because it helps them build 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 apps 5. Turns out your app needs clustering too, 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 Developers Custom Integration 17 SOAP/Web Services (Axis) Your Killer App/ Security JMS Messaging Authentication Apache Tomcat Web Tier Clustering Other services you need/write maintain all this! Custom Integration

Now, just much easier (oh, and futureproof)! • What if you could start with

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 and Components 19

Geronimo Architecture - GBean • The Geronimo framework provides a set of cooperating classes,

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 J 2 EE 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

• 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, OPen. EJB …. ) • GBean can notify events. 21

Geronimo components 22 Specification required for J 2 EE certification Area of coverage Project

Geronimo components 22 Specification required for J 2 EE certification Area of coverage Project or code used by Geronimo Servlets 2. 4 Java. Server Pages (JSP) 2. 0 Web tier container with support for JSPs and servlets Jetty and Tomcat Enterprise Java Beans (EJB) 2. 1 EJB container Open. EJB Java Message Service (JMS) 1. 1 Messaging service Active. MQ 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 Object. Web Logger (HOWL) for transaction logging, XA supported, evolving to Java Open Transaction Manager (JOTM) Java. Mail 1. 3 Mail Custom coding Java. Beans Activation Framework (JAF) 1. 0 Activation -- handling html/text/gif/jpg MIME types, primarily for Java. Mail attachments Custom coding JSR 77 -- J 2 EE Management 1. 0 Manageability Custom coding with MX 4 J JSR 88 -- J 2 EE Deployment 1. 1 Deployment and configuration -cross-vendor server deployability Custom Code JMX 1. 2 Manageability MX 4 J

Geronimo components - cont 23 Java Data Access API (JDBC) 3. 0, 2. 1

Geronimo components - cont 23 Java Data Access API (JDBC) 3. 0, 2. 1 Database Code from Tran. QL 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 J 2 EE Connector Architecture (J 2 CA) 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 Derby Persistence mechanism Database Unified substrate for CMP and Beans/POJO oriented schemes over Tran. QL Interoperability TCP/IP, HTTP 1. 1, SSL 3. 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

Deployment Framework • Each Component has a GBean and deployment plan. • Plan is an xml file containing properties of GBean • Server is built using j 2 ee-server-plan. xml <gbean name="Jetty. Web. Connector" class="org. apache. geronimo. jetty. connector. HTTPConnector"> <attribute name="host">localhost"</attribute> <attribute name="port">8080</attribute> <reference name="Jetty. Container"><name>Web. Container</name></reference> <attribute name="max. Threads">50</attribute> <attribute name="min. Threads">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 J 2 EE Connectors (RA) META-INF/geronimo-ra. xml Client Application META-INF/geronimo-application-client. xml

Geronimo 1. 1 – Whats New? 25

Geronimo 1. 1 – Whats New? 25

Geronimo 1. 1 • • • 26 Updated deployment plan Running with JDK 1.

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

Geronimo 1. 1 -Little-G • Lightweight distribution of geronimo available for both jetty and tomcat • Small space requirement ~20 MB and smaller memory footprint • It includes a Web. Container, Transaction Manager and some other essential elements of Geronimo. • Not J 2 EE compliant • Can be upgraged for specific requirement like JMS, J 2 EE etc using plugins. 27

Geronimo 1. 1 -Plugins • A Geronimo plugin is a new packaging mechnism for

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

Plugin web console 29

Getting Started 30

Getting Started 30

Quick Start • Available for download from http: //geronimo. apache. org/downloads. html • Linux,

Quick Start • Available for download from http: //geronimo. apache. org/downloads. html • Linux, windows and Mac. OS 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 SP 2 • 120 MB Disk Space • 128 MB RAM (256 MB Preferred, depends upon deployed Applications) • Installation • Windows • Install JDK, set JAVA_HOME and simply unpack geronimo-*-j 2 ee 1. 1. zip • Linux • Install JDK, export JAVA_HOME and simply unpack geronimo-*-j 2 ee 1. 1. tar. gz 31

Server Administration • Starting a Server • From application launcher, execute startup. bat or

Server Administration • Starting a Server • From application launcher, execute startup. bat or startup. sh, or run java – jar binserver. 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, -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

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

Administration and Configuration 34

 • Web Console The administration console provides a convenient, user friendly way to

• 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, J 2 EE connectors management Apache HTTP, Derby maintenance Application/ Modules/ Plugin management Security realms management

Web Console view 36

Web Console view 36

Deploying JDBC and JMS resources • Database Pool is deployed as a connector in

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 No Application-scoped No Yes No Client Module-scoped No No Yes • Configuring Database pool • Create Database Pool deployment plan containing config. Id, parent. Id, 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

Deploying JDBC and JMS resources - Cont • JDBC Resources • In Modules Deployment descriptor ie web. xml Add resource ref <resource-ref> <res-ref-name>jdbc/Data. Source</res-ref-name> <res-type>javax. sql. Data. Source</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/Data. Source</naming: ref-name> <naming: resource-link>System. Datasource</naming: resource-link> </naming: resource-ref> • In Application code lookup datasource and use it. Initial. Context ctx = new Initial. Context(); Data. Source ds = ctx. lookup("java: comp/env/jdbc/Data. Source"); Connection con = ds. get. Connection(); • JMS Resources • The default Geronimo server starts with Active. MQ 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 J 2 EE connector, which can be used like JDBC resource. 38

Geronimo Classloader Bootstrap, Extensions – JVM Classes System – Geronimo System Server – Critical

Geronimo Classloader Bootstrap, Extensions – JVM Classes System – Geronimo System Server – Critical classes and services for J 2 EE 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

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 log 4 j configuration settings can be done directly in server-log 4 j. properties, deployerlog 4 j. properties and clientlog 4 j. properties file 40

Security • In Geronimo you can define and activate multiple security realms build around

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/j 2 eesecurity-plan. xml • In order to enable https access to web applications, Geronimo requires keystore. 41

Development Enviornment 42

Development Enviornment 42

Development Environment • Development Tools • Eclipse plug-in for creating, deploying, and debugging Geronimo

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 J 2 EE 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

Development Environment views 44

Quick Application Development 45

Quick Application Development 45

Quick first web application • Create Hello. World. jsp • Create a plain text

Quick first web application • Create Hello. World. jsp • Create a plain text file in the <app_home> directory named Hello. World. jap and copy the content <%@ page content. Type="text/html; charset=UTF-8" language="java" %> <html> <head> <jsp: use. Bean id="datetime" class="java. util. Date" /> <title>Hello IBM Geronimo Version 1. 1</title> </head> <body> <h 2>Welcome to Geronimo Version 1. 1</h 2> <p>Congratulations on running this simple application on ${datetime}. </p> </body> </html> • Create Standard J 2 EE complaint deployment descriptor web. xml in <app_home>/WEB-INF directory <web-app version=“ 1. 0" xmlns="http: //java. sun. com/xml/ns/j 2 ee"> <welcome-file-list> <welcome-file>Hello. World. jsp</welcome-file> </welcome-file-list> </web-app> 46

Quick first web application– cont. • Create Geronimo plan • Although this sample application

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" config. Id="Hello. World"> <context-root>/hello</context-root> </web-app> • Package the application • From command prompt, go to <app_home> directory and execute jar –cvf Hello. World. 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 bindeployer. jar --user system --password manager deploy sampleHello. World. war • Test the application by pointing a Web browser to the following URL: http: //localhost: 8080/hello 47

Getting Involved 48

Getting Involved 48

What more? Geronimo 1. 2 • The next version of Geronimo is focused on

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. • J 2 EE 1. 5 – EJB 3, Web 2. 5 • Portal Server plugin 49

Getting Involved • Geronimo home page • http: //geronimo. apache. org/ • Future road

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 • user@geronimo. apache. org • dev@geronimo. apache. org • IRC • Irc. freenode. net - #geronimo • Wiki • http: //cwiki. apache. org/geronimo • Documentation • http: //geronimo. apache. org/documentation. html 50

Summary Q&A 51

Summary Q&A 51