I am happy to announce the 5.1.0.CR1 release of the JBoss Application Server! This is the first AS release to include Embedded JOPR, our new web-based administration console. We are hoping to get as much feedback as possible before releasing the final 5.1.0, so please try it out and tell us what you think.
Also included in this release is the new 1.0.0.PREVIEW release of Web Beans, a key technology that greatly simplifies EE web development. This release is the first feature complete implementation of the public draft. Check out Pete's blog for more info.
For those that were missing the farming clustering service, it is now back as of this release. See the wiki page on the relevant changes.
As always, many other updates too numerous to mention were made. To see the full list, check out the detailed release notes.
Download 5.1.0.CR1 here, and have a great open source day!
What better time to start blogging here as on the day we push our 2years+ work out as GA ready.
By our work I mean JBoss Microcontainer project, MC for short name. ;-)
So, I'm happy to announce that we've finally went 2.0.0.GA with MC.
- Reflect 2.0.2.GA
- VFS 2.0.0.GA
- MDR 2.0.1.GA
- Managed 2.0.0.GA
- Kernel 2.0.2.GA
- ClassLoader 2.0.1.GA
- Deployers 2.0.3.GA
And the piece that binds my blog with other Seam bloggers
All MC sub-projects are fully mavenized, hence making it super easy to use.
We're a bit behind with documentation, but we'll be happy to help you on our forums:
For some light reading / coding check my DZone article along with its demos:
JBoss people blogging about it:
- BMW's JBoss Rails (really cool Deployers usage)
- Sacha about MC (if you read our JBoss Newsletter, he'll be doing some MC in Paris soon)
And for all who will be at Devoxx, come and grab me if you wanna talk about MC. ;-)
Mark Newton presents JBoss application server 5.0
What's New at the JUG Switzerland.
119 days average release cycle, 9 releases of JBoss 3.2.x, J2EE 1.3 certification, JDK 1.3.
126 days average release cycle, 6 releases of JBoss 4.0.x, J2EE 1.4 certification, JDK 1.4.
55 days average release cycle, 3 releases of JBoss 4.2.x, JEE 5.0 compatible implementation, not certification, does 95% of it and requires JDK 5.0.
For JBoss AS 5.0.x new standalone implementations:
- JBoss Messaging (replaces old JBoss MQ)
- JBoss Security
- JBoss Federated SSO
New kernel is JBoss Microcontainer 2.0 and a profile service which is responsible for managing the POJOs that now bind the services together. Aiming for a Q1 2008 final release date and a CR in 2007.
The new JMS 1.1 compatible messaging implementation supports distributed queues and topics as well as transparent failover and load distribution - internally it uses JGroups as transport.
New major revision of JBoss Cache (2.1) with a much simpler API and a greater emphasis on usage outside of JBoss AS.
Integrated with the microcontainer: If you add behavior to a POJO using AOP, and you deploy it, you get dependency management - you can't call a POJO without the aspect, it won't be deployed before the aspect is available. And vice versa, aspects are not deployed if the POJOs they depend on are not deployed so far. Aspects can be bound to POJO lifecycle, e.g an aspect that binds a proxy into JNDI when the POJO enters the
deployed state. It also has some new plain AOP features: Before, Afer, Throwing, Finally
flows for interception.
A microkernel needs to support dynamic loading and unloading of services. For that we need:
- a way to deploy new services
- a bus so that the client does not communicate with a service directly, clients are decoupled from services
How was this done in JBoss 3.x and 4.x? We used an MBeanServer to provide the bus and deployers that load services into the kernel together with a simple dependency injection mechanism. MBeans were used to implement services and configured with XML descriptors which injected attribute values into the MBeans at deployment. XMBean are special MBeans that allow you to add method interception to an MBean. Calls pass through the bus and interceptors with a level of indirection through a generic invoke(method, arguments, argumentTypes) operation.
For performance reasons the bus wasn't actually used much: A reference to a services would be looked up directly in the registry. So the interceptors were not used.
What was bad about the JBoss JMX microkernel:
- JMX is restrictive, lifecycle and classloading were a problem
- You can't run JMX on Java ME
- You actually need to know how to implement MBeans
- If you access services directly through a reference, interceptors are not applied
Services should be POJOs and behavior should be added through AOP - effectively reproducing all the features of the JMX microkernel. Much improved dependency injection and classloading. Layered and easily extensible design (no references to JBoss classes), should be usable without JBoss AS.
The new name for this kernel is Microcontainer.
The core of the microcontainer is Container, Kernel, Dependency. Behavior is added with JBoss AOP.
Kernel: Provides the bus and registry, and an event manager.
Container: Wrapper for POJOs, AOP jointpoints and reflection on the actual service implementation POJO.
Dependency: Basically an abstract state machine that manages service dependencies.
Some optional packages on top of the core: OSGI integration, Guice integration.
Define the POJO with <bean> and <property> declarations in jboss-beans.xml (replaces the old jboss-service.xml). Beans have a name and a class, properties support injection with references to (other) bean names.
Add behavior using the <aop:aspect> namespace and elements and pointcut expressions. You can also extract the aspect/pointcut to a separate file.
Management system for POJOs instead of the old JMX based administration which was based on editing XML files. People would manage configurations by keeping these files in CVS. The web console only supported changing the runtime values in memory, didn't write back into the files.
What we want:
- Centralized maintenance as profiles, e.g. all, minimal, default, ...
- Persistence of changes made to a profile across server restarts
- Propagation of profile changes across a cluster
- Versioning of profiles
Implementation similar to JDK 6 Open MBeans specification: A deployment has a collection of ManagedObjects, you define them with annotations in your service, e.g. @ManagedOperation(description="A setting you can change")
- JBoss AS 5.0 has a completely new architecture based on the microcontainer with POJOs and AOP
- Management improved with the addition of profile service
- Clustering and security is much enhanced
- It will be fully Java EE 5.0 compliant