Course Summary
Marakana Java™ EE on JBoss™ training is a must-have for anyone wanting to learn how to develop enterprise Java applications on JBoss application server platform. By the end of this example-packed, lab-driven course you will become proficient in Java EE specifications, APIs, semantics, development, as well as JBoss AS deployments, architecture, administration, tuning, security, high-availability + scalability, and best practices.
This course is based on Java EE 5 and JBoss 5.1.
Duration
5 days.
Objectives
Upon completion of this course, you will be able to create distributed JavaEE applications using JBoss application server.
Audience
Java application developers and programmers with at least 2 to 3 years of experience who are or will be involved in enterprise application development.
Before taking this course, students should have an advanced knowledge of Java programming.
Instructors
Aleksandar (Saša) Gargenta is the technology brains at Marakana. Always on top of the latest in software, Aleksandar is company's radar for technology that matters.
Aleksandar is the author of Marakana's Java, Advanced Java, Spring/Hibernate, JBoss, Apache, XML/XSL, and JUnit/TestNG training courses. Phew. And if that's not enough, he's also the chief architect of Marakana Spark, the on-demand software platform that powers marakana.com and a number of other training companies. As an instructor he's taught hundreds of classes for everyone from Apple to Disney, from NASA to the Department of Defense.
In his spare time Aleksandar runs the San Francisco Java and the San Francisco Android User Groups with over a thousand members between the two.
More about Aleksandar Gargenta...
My work with some of the world's most successful corporations has given me deep insight into the effective application of appropriate software tools and techniques in today's commercial environment.
My overall strengths include excellent communication and training skills, substantial knowledge and experience of the Java platform and XML technologies, proven judgement in the selection of emerging technologies, and an intelligent, mature approach to any new challenge.
I continue to invest heavily in keeping my knowledge and skills up to date in Java and XML for the enterprise, the relevant programming techniques and libraries, system architectures, and applications. I have retained an enthusiasm for the technical subjects I teach, which has often been commented upon in course evaluations. More about Michael Callaghan...
Additional Notes
This course is typically delivered in five days but we can customize the curriculum to fit your specific training requirements.
Java™ and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. JBoss™ is a registered trademark of Red Hat, Inc.
Outline
JavaEE
- Overview of JavaEE
- Benefits of JavaEE
JBoss
- Overview of JBoss Organization
- Overview of JBoss Application Server
- Highlights of JBoss AS
- JBoss AS Architecture
- JBoss AS Requirements
Installation
- Getting, installing, and configuring Java
- Getting JBoss
- Building from source
- Installing JBoss
- Unpacking
- Using the installer
Directory Structure
- Examining JBoss AS directory structure
- Explaining JBoss AS files, scripts, and utilities
- Understanding JBoss AS configuration ("server") sets
- JBoss AS logging
Starting/Stopping
- Using the run script
- Verifying server startup
- Stopping (shutting down), including remote stopping
- Remote starting (netboot)
Deployment
- JavaEE development-deployment life-cycle
- JavaEE deployment descriptors
- Deployment on JBoss AS
- Deployers on JBoss AS
- Deployment Dependencies
- Hot vs. Cold Deployment
- Looking at conf/jboss-service.xml and XMBeans
JBoss-IDE
- Overview of JBoss IDE plug-ins for Eclipse
- Configuring JBoss IDE
- Controlling JBoss AS from Eclipse
Web Tier
- Overview of web technologies (CGI, Cold Fusion, PHP, APS, Servet/JSP)
- CGI vs. Servlets/JSPs
- Advantages of Servlets
- JavaEE Web Applications
- Java Servlets
- Life-cycle
- API
- Processing requests
- Generating responses
- Defining and mapping in WEB-INF/web.xml
- Web Application structure
- Deploying web applications
- Development through JBoss IDE
- Automation with XDoclet
- Serving Requests with multiple resources
- Overview of MVC
- Scoped storage: request, session, application
- Initializing applications
- Thread-safety
- Generating binary responses
- Welcome files
- Error documents
- Introduction to Servlet Filters
- Life-cycle
- API
- Defining and mapping in WEB-INF/web.xml
- JavaServer Pages
- Life-cycle
- API
- Development through Eclipse
- Packaging
- Implicit objects
- Directives, scriptlets, expressions, declarations, comments
- Actions
- Introduction to JSP tag libraries
- Using JSP Standard Tag Library (JSTL)
- Expression Language (EL)
- Tomcat Web Container
- Overview of Tomcat
- Architecture
- Configuration (jboss-service.xml and server.xml)
- Tomcat's web.xml
- Serving static content
- Virtual hosting
- Web access logging
JNDI
- Overview of JNDI
- Role of JNDI in JavaEE
- JNDI API
- Using JNDI
- JNDI resources
- JNDI on JBoss AS
JavaMail
- Overview of JavaMail
- JavaMail API
- JavaMail service on JBoss AS
- Sending (SMTP) and fetching (IMAP/POP) mail
JMX
- Overview of Java Management Extensions
- JMX Architecture (layers)
- JMX MBeans
- JMX on JBoss AS
- JMX Console
- Twiddle tool (JMX command-line client)
- Developing MBeans through JBoss IDE and XDoclet
- Packaging service archive (SAR) files
- Web Console
- JBoss Monitoring
Class Loading
- Java Class Identity
- JavaEE Class Loading Requirements
- Class Loading on JBoss
- Default Class Search Order
- Scoped Class Search Order
- Log4j Issues
- Common Problems With Class Loading
Database Integration
- Managed Database Connection Pools
- Referencing database connection pool resources
- Installing JDBC drivers
- Defining database resources in JBoss AS
- Resource Mapping
- MySQL example
- JBoss embedded Hypersonic database
- Detecting DB Connection Leaks
JMS
- Overview of Java Messaging Service
- JMS Architecture
- JMS Messaging Domains (Point-to-Point, Publish and Subscribe)
- JMS Message Consumption
- JMS API
- Developing with JMS
- JMS on JBoss AS
- Configuration
- Creating destinations (queue and topic)
EJB
- Overview of Enterprise JavaBean technology
- EJB Container
- Benefits of EJB
- Types of EJBs (session, entity, message-driven)
- Entity bean (JPA: persistence, transactions, primary keys, relationships)
- EJB client interfaces (remote, local, web service)
- EJB life-cycle (entity, stateful session, stateless session, message-driven)
- Developing stateless session beans through JBoss IDE
- Initialization, business methods, and "plumbing"
- Automating with XDoclet
- Developing EJB clients (local, remote)
- Packaging with enterprise Archive (EAR) files
- Testing
- Developing message-driven beans through JBoss IDE
- MDB destination
- Accepting requests
- Linking EJBs
- Using external resources
- MDB clients
- Testing
- Drawbacks of EJBs
Transactions
- Overview of Transactions (ACID properties)
- Resource Locking (pessimistic vs. optimistic)
- Distributed Transaction Components (JTA API)
- Two-phase XA protocol
- Heuristic Exceptions
- Transactions on JBoss AS
- Container-Managed Transactions (CMT)
- User Transactions
Web Services
- Overview of Web Services
- Service Oriented Architecture (SOA)
- Overview of JAX-RPC
- Web Services on JBoss AS
- Servlet-based web service example
- Creating end-point
- Generating descriptors (including WSDL) using WSDP
- Packaging and deploying
- Creating web service client
Security
- Filtering Clients by Source (IP address or hostname)
- Authentication and Authorization using JAAS
- Role-based declarative security
- Requiring authentication and authorization in deployment descriptors
- JBoss plain-text login module
- JBoss database login module (example with MySQL)
- Linking to security domain
- Securing passwords with MD5
- FORM-based login (including the handling of errors)
- Configuring JBoss AS for SSL
- Generating SSL certificates
- Tomcat's SSL connector
- Requiring SSL in web applications
- Securing JBoss AS
- Running with low-privileges
- File-system security
- Securing console applications/toos and services
- Running with Java Security Manager
- Running behind a firewall
Performance
- JVM tuning (garbage collection optimization)
- Tuning Tomcat (connectors, valves, JSPs, etc.)
- RMI tuning
- Tuning other JBoss services (including logging)
- Slimming JBoss AS (removing unnecessary services)
Clustering
- Examining requirements: fault-tolerance / high-availability (HA) and scalability
- Exploring web system architectures
- Fronting JBoss with Apache (using mod_jk)
- Enabling simple load-balancing
- Using sticky sessions
- Configuring clustered session replication
- Clustering of JBoss services (HA-JNDI, HA-JMS, etc.)
- Cluster Farming Deployment
Course Testimonials
The course was great! However, the pace could have been slower. But I don't blame the instructor for this as the amount of material to cover was enormous... The Instructor was simply brilliant covering everything and some more in the given time.
An excellent course! And a pleasure to work with an instructor so well versed in the subject.
Having had no prior knowledge of the J2EE spec, app servers, etc.; I found the course to be very enlightening.
Ideal course for a jumpstart to J2EE for experienced Java Developers... Marakana helped us get started on J2EE development in under 5 days!
Knowledge and experience and presentation skills were excellent.
Michael was a very proficient and knowledgeable instructor. He really took the time to focus on and answer the the questions that were important to our group.
