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.
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
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
Architecture | Java EE 5 | Clustering | Management | Development |
---|---|---|---|---|
OSGi's based services | Support for annotations in servlet | CMI v2 : dynamic cluster | Discovery service on top of JGroups | Examples refactoring |
OSGi/java EE gateway | JSF support | EJB3 load-balancing | Monitoring with graphs | Eclipse launcher |
New components | JSTL 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
*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;
}
* 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>
<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 {
}
@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
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
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 elementDeployment 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
development mode is 'true'
2007-07-11 15:52:47,686 : ServiceManager.startServices : depmonitor service started
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
...
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
\#
\#\#\#\#\#\#\# 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 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."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.- Project
- Demos
- Services
- Documentation
- Downloads
- Community
- Developers