JOnAS 5.0: New and Noteworthy


JOnAS 5.0: New and Noteworthy

5.0.5 Release Notes

This release is available on the download page or with a JNLP installer.
JOnAS 5.0.5 is distributed as a set of OSGiTM bundles that are deployed on top of the Apache Felix gateway.



Components:
Components have been upgraded. This includes CMI 2.0-RC8b, EasyBeans 1.1.0-M1b, Ow2-util 1.0.8b, Joram 5.1.0a


Bug fixes
311324: jms topics and queues are now registered when CMI is activated.
311114: HA MBeans are unregistered when the service is stopped.
310601: client.jar can launch applications.

5.0.4 Release Notes


This release is available on the download page or with a JNLP installer.
JOnAS 5.0.4 is distributed as a set of OSGiTM bundles that are deployed on top of the Apache Felix gateway.


New Features:

  • EJB 2.1 statistics:
    When activated, EJB 2.1 statistics (for Stateless and Stateful Session beans) appears in the JOnAS Administration console. Business method call counts, call duration (min, max and average), time spent in business code (container excluded) or total time spent in method call (container included) is now available for each EJB.
  • Application versioning:
    In jonasAdmin, the number of active sessions per versions is displayed.

Documentation
Update of the documentation (versioning, EJB 2.1 monitoring, ...).


Components:
Components have been upgraded. This includes Carol 3.0RC8, CMI 2.0RC8, EasyBeans 1.1.0-M1, IRMI 1.1.2, Joram 5.0.9, Monolog 2.1.11.


Maven2 Plugins
GenIC (EJB 2.1) and WsGen (J2EE 1.4 WebServices) are now available as plugins for maven2 users.

  • org.ow2.jonas.tools.maven:maven-genic-plugin
  • org.ow2.jonas.tools.maven:maven-wsgen-plugin

Take a look at the MEJB pom.xml for usage example.


Bug fixes
Bugs have been fixed.

5.0.3 Release Notes

This release is available on the download page or with a JNLP installer.
JOnAS 5.0.3 is distributed as a set of OSGiTM bundles that are deployed on top of the Apache Felix gateway.


Release notes:

Dependency injection:
@EJB and @Resource annotations are supported in servlets with Tomcat 6.

Examples:
The Java EE 5 example has been enhanced. There are new code, new schemas that explain the code, etc.
Try this updated example !


Documentation
Documentation has been migrated to docbook format.
Getting started guide has been rewritten. It illustrates the creation of Java EE modules.

Components
:

Components have been upgraded. This includes EasyBeans 1.0.0, Cmi 2.0RC7 or Carol 3.0RC7, etc.


Bug fixes
Bugs have been fixed.

5.0.2 Release Notes

This release is available on the download page or with a JNLP installer.
JOnAS 5.0.2 is the first release of JOnAS 5.0 that is only delivered with a set of OSGiTM bundles that are deployed on the Apache Felix gateway.

Some information can be found on the New and noteworthy and the Getting Started.

Release notes:

Services
  • New Services:
  • Versioning service: this service allows to run different versions of a web module. This allows to migrate web components smoothly.
  • Work Cleaner service: this service cleans up some unused

    temporary folders that have been used when deploying components.

  • Change:
  • 'ejb' service has been renamed to 'ejb2' service.
  • Delete:
  • Deprecated jms service has been removed

OSGi deployer:
This deployer allows to deploy any bundles that are located in JONAS_BASE/deploy directory. It's very easy to add bundles on the gateway !


Upgrade of components
Clustering part has been enhanced with the upgrade of the CMI component.
Pool of EJB3 can be managed with META-INF/easybeans.xml specific deployment descriptor or with @Pool annotation


Bug fixes
A lot of bugs have been fixed.

New features highlights



ArchitectureJava EE 5ClusteringManagementDevelopment
OSGi's based servicesSupport for annotations in servletCMI v2 : dynamic clusterDiscovery service on top of JGroupsExamples refactoring
OSGi/java EE gatewayJSF supportEJB3 load-balancingMonitoring with graphsEclipse launcher
New componentsJSTL support Cluster daemon discovery
Misc.New JPA implementations support Cluster daemon monitoring
Cluster daemon user command
Deployment Refactoring
JOnAS life cycle management
OSGi console
Ant tasks
new look for jonasAdmin console

"Architecture">Architecture ==

OSGi's based services

JOnAS 5.0 is designed with an OSGi based services architecture to provide a dynamically adaptable application server. JOnAS is a set of OSGi bundles, technical services are OSGi services:
  • Modularity and extensibility is enhanced: the new server architecture makes it easy to replace a service implementation or to add a new service
  • Dynamic configuration: services can be started, stopped, reconfigured at runtime


    The Felix R4 OSGi gateway is supported and iPOJO, the service component runtime, is used for handling the service dependencies.

    JOnAS 5.0 is launched with the usual jonas command that is launching an OSGi Gateway (Apache Felix) on which the JOnAS bundles are deployed. More detailed information can be found here.

    Example:

*jonas bootstrap* : start only the felix OSGi gateway and a JMX remote connector enabling to administrate it. Services can be launched later.
*jonas start* : total start of the server.
*jonas halt* : total stop of the server.
*jonas stop* : stop of server, the OSGi gateway and the bootstrap services are still running

Bundles list

In JOnAS/OSGi, the services are packaged into bundles. Hereinafter a list of available bundles:
  • bootstrap
  • client-bootstrap
  • eclipse-compiler
  • felix-launcher
  • javaee-api
  • jonas-ant-tasks
  • jonas-bootstrap-loader
  • jonas-carol-registry
  • jonas-cmi
  • jonas-commons
  • jonas-db-base
  • jonas-db-base
  • jonas-db-hsql
  • jonas-db-hsql
  • jonas-dbm
  • jonas-deployable-monitor
  • jonas-deployable-monitor
  • jonas-deployment-api
  • jonas-deployment
  • jonas-discovery-base
  • jonas-discovery-jgroups
  • jonas-discovery-multicast
  • jonas-domain
  • jonas-ear
  • jonas-ejb-2.1
  • jonas-ejb-2.1
  • jonas-ejb-2.1
  • jonas-ejb2.1-ha
  • jonas-ejb-container
  • jonas-ejb-container-svc
  • jonas-ejb-easybeans
  • jonas-ejb-ha
  • jonas-generators-base
  • jonas-generators-clientstubs
  • jonas-generators-raconfig
  • jonas-generators-wsgen
  • jonas-genic
  • jonas-jms-manager
  • jonas-jmx
  • jonas-mail
  • jonas-management-javaee
  • jonas-management-reconfig
  • jonas-management-reconfig
  • jonas-management-tools
  • jonas-management-tools
  • jonas-mbeans
  • jonas-naming
  • jonas-resource
  • jonas-sec-interceptors-iiop
  • jonas-sec-interceptors-jrmp
  • jonas-security-auth
  • jonas-security
  • jonas-security-jacc
  • jonas-security-jacc-handlers
  • jonas-security-propagation
  • jonas-services-api
  • jonas-timer
  • jonas-tm-jotm
  • jonas-trans-interceptors-iiop
  • jonas-trans-interceptors-iiop
  • jonas-trans-interceptors-jrmp
  • jonas-version
  • jonas-versioning
  • jonas-web-container-base
  • jonas-web-container-base
  • jonas-web-container-jetty-6.1
  • jonas-web-container-tomcat-6.0
  • jonas-webservices-axis
  • jonas-webservices-base
  • jonas-workcleaner
  • jonas-workcleaner
  • jonas-workmanager
  • joram
  • joram
  • monolog
  • ws-security

OSGi/java EE gateway

Easybeans provides an access from the EJBs to OSGi Services through the capability to inject the bundle context in the EJB3s.

A specific annotation @OSGiResource can be used for injecting the bundle context.
Example for getting the bundles list:

/**
  * Bundle context that will be injected by the container.
  */

@OSGiResource
private BundleContext bundleContextField = null;

/**
  * @return the list of all OSGi Bundles symbolic names found on the gateway.
  */

public List<String> listOSGiSymbolicNameBundles() {
  List<String> symbolicNames = new ArrayList<String>();
  Bundle[] bundles = bundleContextField.getBundles();
 if (bundles != null) {
   for (Bundle bundle : bundles) {
      symbolicNames.add(bundle.getSymbolicName());
   }
 }
 return symbolicNames;
}

JOnAS/OSGi bundles

Any OSGi bundles can be deployed in JOnAS like any other Java EE modules. The bundles that are located in JONAS_BASE/deploy directory will be started on the OSGi gateway.

New versions of embedded components

OW2 components

  • ASM 3.0
  • Carol 3.0-RC4
  • Cmi 2.0-RC5
  • EasyBeans 1.0.0.RC3_JONAS
  • Irmi 1.1.1
  • Joram 5.0.7
  • Jorm 2.9.3-patch
  • Medor 1.7.1
  • Medor-exp 1.6.3
  • Monolog 2.1.8
  • Ow2 bundles 1.0.3
  • Ow2 spec api 1.0-M1
  • Perseus 1.5.4

Others components

  • Felix 1.1.0
  • Felix-gui 0.9.0
  • Felix-configadmin 0.9.0
  • IPojo 0.7.5
  • JacOrb 2.2.3-jonas-patch-20071018
  • Jetty 6.1.5
  • JGroups 2.6.2
  • Jspc 2.0-alpha-1
  • P6spy 1.3
  • rdb-adapter 3.2.2
  • Tomcat 6.0.14
  • Xalan
  • Xerces 2.8.1

Misc.

  • Deletion of jms service

"JavaEE5">Java EE 5 ==

Support for annotations in servlet

The annotations @resource, @PersistenceContext, @PersistenceUnit can be used in the servlets classes. @ejb annotation is not supported yet.

JSF support

JavaServer Faces Technology is now supported with the Sun's JSF RI 1.1.2.

JSTL support

The Sun's JavaServer Pages Standard Tag Library (JSTL) 1.2 is delivered with JOnAS.

New JPA implementations support

Easybeans supports the following JPA implementations:
  • Hibernate Entity Manager
  • Apache OpenJPA
  • Toplink Essentials

"Clustering">Clustering ==

CMI v2

JOnAS 5 makes clustering easy and dynamic with the new version of CMI:
  • multi-protocols support (RMI/JRMP, RMI/IRMI and RMI/IIOP)
  • POJO load-balancing algorithms
  • dynamic cluster parameters for large scale deployment : hot deployment of the cluster logic, update from jonasAdmin console
  • common solution proxies based for EJB2/EJB3

    The clustering configuration addresses the following points:

  • JOnAS can use a cmi client or a cmi server. Here are the global configurations:
    • A cmi server allows to add clustered objects. To use a cmi server, the service cmi must be enabled in jonas.properties.
    • If clustered objects only need to be accessed, the cmi client should be used to improve performances. As a difference with cmi server, the client doesn't use a group communication protocol and is only connected at a single node. To enable the cmi client with JOnAS, the property carol.start.cmi must be set to true in the carol.properties file. Also, the property cmi.server.start.replication must set be to false (else the server mode will be enabled).
  • CMI can be enabled individually on each protocol: the parameters carol.myprotocol.cmi must be set to true in the carol.properties file
  • The JGroups parameters are given in the cmi.server.impl.jgroups.conf and cmi.server.impl.jgroups.groupname parameters of the carol.properties file.
  • The load factor of the weighted round robin algorithm is set in the cmi.server.load parameter of carol.properties file.

EJB2 load-balancing

The clustering policy file name for an EJB is specified in the JOnAS's specific deployment descriptor through the cluster-policy element. The clustering policy file describes the cluster logic classes implementations in an XML syntax. Example for a round robin algorithm whose the implementation class is delivered with JOnAS:
<cmi xmlns="http://org.ow2.carol.cmi.info.mapping">
 <clusteredObject>
   <clusterName>myCluster</clusterName>
   <policyType>org.ow2.carol.cmi.lb.policy.RoundRobinPolicy</policyType>
 </clusteredObject>
</cmi>

EJB3 load-balancing

EJB3 load-balancing is available for the stateless session bean. JOnAS's specific annotations are defined for specifying the clustering parameters:
  • @Cluster to indicate that a bean is clustered
  • @LBPolicy to indicate a policy of load-balancing
  • @LBStrategy to indicate a strategy of load-balancing
  • @LBProperties to add properties at a policy

    Example for a round robin algorithm:

@Stateless
@Local(StatelessLocal.class)
@Remote(StatelessRemote.class)
@Cluster(name="myCluster")
@LBPolicy(RoundRobinPolicy.class)
public class StatelessBean implements StatelessRemote {
}

"Management">Management ==

Discovery/JGroups

A new implementation of the Discovery service on top of JGroups is added. You can move from the multicast implementation to the JGroups one (or inversely) by setting the correct class implementation in the $JONAS_BASE/conf/jonas.properties file
#  Set the name of the implementation class and initialization parameters
jonas.service.discovery.class=org.ow2.jonas.discovery.jgroups.JgroupsDiscoveryServiceImpl
#Uncomment this to set Multicast implementation
#jonas.service.discovery.class=org.ow2.jonas.discovery.internal.MulticastDiscoveryServiceImpl

The JGroups configuration for this service is given in the $JONAS_BASE/conf/jgroups-discovery.xml file

Monitoring with graphs

The monitoring pages of jonasAdmin console (master node in the domain management) are enhanced with graphs enabling to track numeric indicators over a period of time.

Cluster Daemon discovery

The discovery protocol of the domain management supports the cluster daemon in the JGroups implementation. It allows to maintain a monitoring view of the different cluster daemons in the master node. The configuration of the cluster daemon's discovery service is given in the clusterd.xml and the clusterd-jgroups-discovery files.

Cluster Daemon monitoring

The cluster daemon is now monitored in the domain management. The user can consult, from the master node, the current state and other information about the cluster daemon configuration and about the machine (OS, cpu load, memory usage...).

Cluster Daemon user command

The cluster daemon configuration supports the capability to define a user command for controlling JOnAS. By default the jonas command delivered with JOnAS is used. By specifying its own command, the user can set the environment and do pre and post processing.

In the clusterd.xml file, the user command must be defined in a new optional element for each JOnAS server.

Deployment refactoring

A new deployment framework is provided in JOnAS 5.0 RC1. For now, EJB3 and EAR may use this deployment.

This new framework is shared by EasyBeans and JOnAS.

By dropping files into JONAS_ROOT/deploy directory, they are automatically loaded and monitored. If a change occurs on a file, it is reloaded.

Removing a file undeploys the associated module.

Example:

2007-07-11 15:52:47,685 : DeployableMonitorService.doInit : Use the deploy directories '[/home/sauthieg/jonasbases/jb.50/deploy]',
        development mode is 'true'
2007-07-11 15:52:47,686 : ServiceManager.startServices : depmonitor service started
An ear placed in the JONAS_BASE/deploy directory will be automatically deployed:
mv /home/sauthieg/jonasbases/jb.50/apps/j2ee-1.4.ear /home/sauthieg/jonasbases/jb.50/deploy/

...
2007-07-11 15:57:28,152 : Rar.processRar : Starting deployment of /tmp/JOnAS-Deployer-sauthieg/EAR/j2ee-1.4.ear/ra-sample.rar
2007-07-11 15:57:28,245 : Rar.processRar : /tmp/JOnAS-Deployer-sauthieg/EAR/j2ee-1.4.ear/ra-sample.rar available
2007-07-11 15:57:28,614 : JContainer.addBean : EarOp available
2007-07-11 15:57:29,137 : AbsJWebContainerServiceImpl.registerWar : War /tmp/JOnAS-Deployer-sauthieg/EAR/j2ee-1.4.ear/earsample.war
   available at the context /j2ee-1.4.
2007-07-11 15:57:29,141 : EarDeployer.deployEAR : 'EARDeployableImpl[archive=/tmp/JOnAS-Deployer-sauthieg/EAR/j2ee-1.4.ear]'
   EAR Deployable is now deployed
It is configurable in the jonas.properties:
\#
\#\#\#\#\#\#\# JOnAS Deployment Monitor
\#
\# Set the name of the implementation class of the deployment monitor service
\#
jonas.service.depmonitor.class          org.ow2.jonas.deployablemonitor.DeployableMonitorService
jonas.service.depmonitor.development    true
jonas.service.depmonitor.directories

JOnAS life cycle management

The life cycle management has been enhanced within JOnAS 5 for having a better global state control and for providing more flexibility and dynamicity in services control.

A comprehensive description is available here. In the RC1, only a subset of the life cycle management is implemented (global state).

OSGi console

The JASMINe project provides an OSGi console that can be used for controlling the JOnAS OSGi. See here for more information.

Ant tasks

  • Adding the jvmroute in the tomcat ant task

new look for jonasAdmin

The style of the administration console has been revisited.

Add a snapshot

"Development">Development ==

Examples refactoring

  • The Earsample example is delivered in the J2EE 1.4 examples ($JONAS_ROOT/examples/j2ee1.4)
  • The sampleCluster2 example is updated for illustrating the new clustering configuration and is moved to the JOnAS tests's suite.

Eclipse launcher

Very useful for the JOnAS developers, a JOnAS eclipse launcher is now available and enables to test the changes in the middleware quickly after the coding.