OpenWebBeans

Monday September 11, 2017

Apache Meecrowave-1.1.0 has been released

The Apache OpenWebBeans team is proud to announce the release of Apache Meecrowave 1.1.0

Apache Meecrowave is a small server (only 9MB) fully based on JavaEE 8 technologies

    Apache Tomcat (Servlets-4.0)
    Apache OpenWebBeans (CDI-2.0)
    Apache Johnzon (JSON-P-1.1 and JSON-B-1.0), and
    Apache CXF (JAX-RS-2.1).

That means it is ideally suited for Microservices and standalone applications.

Meecrowave can be either started via a maven plugin (for ease of development), programmatically as embedded server, bundled as application with your business code or as runner to start up portable WAR or JAR applications.

The source distribution package can be downloaded from our mirrors:
https://www.apache.org/dyn/closer.lua/openwebbeans/meecrowave/1.1.0

Hashes can be found here
https://www.apache.org/dist/openwebbeans/meecrowave/1.1.0

The binary artifacts are available on maven.central:
https://repo1.maven.org/maven2/org/apache/meecrowave/

More info can be found at
https://openwebbeans.apache.org/meecrowave/


Apache OpenWebBeans-2.0.1 has been released

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-2.0.1

Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-365 CDI-2.0 specification.
OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to Java EE7 server clusters with complicated ClassLoader hierarchies or OSGi environments.

This is a maintenance release targetting the Contexts and Dependency Injection CDI 2.0 specification!


CDI is a JavaEE standard (JSR-365) but fully available under Apache License v2.0.
http://cdi-spec.org/
https://docs.jboss.org/cdi/spec/2.0/cdi-spec.html

Apache OpenWebBeans-2.0.1 implements the CDI-2.0 API, and passes the JSR-330 and JSR-365 TCKs.

Distribution packages can be downloaded from http://www.apache.org/dyn/closer.lua/openwebbeans/2.0.1/

Hashes can be found here http://www.apache.org/dist/openwebbeans/2.0.1/

The release is also available in maven.central

https://repo1.maven.apache.org/maven2/org/apache/openwebbeans/

More info can be found at http://openwebbeans.apache.org 

Monday July 24, 2017

Apache OpenWebBeans-2.0.0 has been released

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-2.0.0

Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-365 CDI-2.0 specification. OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to Java EE7 server clusters with complicated ClassLoader hierarchies or OSGi environments.

This is our first release targeting the brand new Contexts and Dependency Injection CDI 2.0 specification!


CDI is a JavaEE standard (JSR-365) but fully available under Apache License v2.0.
http://cdi-spec.org/
https://docs.jboss.org/cdi/spec/2.0/cdi-spec.html

Apache OpenWebBeans-2.0.0 implements the CDI-2.0 API, passes the JSR-330 JSR-365 TCKs.

Distribution packages can be downloaded from http://www.apache.org/dyn/closer.lua/openwebbeans/2.0.0/

Hashes can be found here http://www.apache.org/dist/openwebbeans/2.0.0/

The release is also available in maven.central

https://repo1.maven.apache.org/maven2/org/apache/openwebbeans/

More info can be found at http://openwebbeans.apache.org

Wednesday July 12, 2017

Apache Meecrowave-1.0.0 has been released

The Apache OpenWebBeans team is proud to announce the release of Apache Meecrowave 1.0.0

Apache Meecrowave is a small server based onTomcat, OpenWebBeans, Johnzon and CXF and thus is ideally suited for Microservices and standalone applications.

[Read More]

Apache OpenWebBeans-1.7.4 has been released-

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-1.7.4

OWB-1.7.4 is an implementation of the JSR-346 CDI-1.2 specification.[Read More]

Wednesday April 19, 2017

Apache OpenWebBeans-1.7.3 has been released

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-1.7.3. Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-346 CDI-1.2 specification.[Read More]

Sunday September 04, 2016

Apache OpenWebBeans-1.7.0 has been released

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-1.7.0!

Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-346 CDI-1.2 specification. The main change to OWB-1.6.x is that we now hava Java7 as minimum requirement. We also removed support for EE5 technologies like JSF-1.2, EL-1.0 and Tomcat6.[Read More]

Saturday March 12, 2016

Apache OpenWebBeans-1.6.3 has been released

The Apache OpenWebBeans Team is proud to announce the release of Apache OpenWebBeans-1.6.3

Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-346 CDI-1.2 specification.

OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to Java EE7 server clusters with complicated ClassLoader hierarchies or OSGi environments. OpenWebBeans-1.6.x implements the CDI-1.2 API, passes the JSR-330 TCK and the JSR-346 standalone and EE7 webprofile TCKs.

We added support for <allowProxying> and bean-discovery-mode='scoped' amongst other features and bug-fixes.

Distribution packages can be downloaded from

http://www.apache.org/dyn/closer.cgi/openwebbeans/1.6.3/

The release is also available in maven.central http://repo1.maven.apache.org/maven2/org/apache/openwebbeans/

More info can be found at http://openwebbeans.apache.org

 The Apache OpenWebBeans Team

Tuesday August 25, 2015

The Road to CDI-2.0

The Apache OpenWebBeans team did start their effort to implement the upcoming CDI-2.0 specification (JSR-365).

Learn more about our schedule and open tasks over in our OpenWebBeans-2.0 documentation.

Tuesday August 11, 2015

Apache OpenWebBeans-1.6.2 has been released

The Apache OpenWebBeans Team is proud to announce the release of the Apache OpenWebBeans-1.6.2 project which implements a CDI-1.2 container.

OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to big Java EE7 server clusters with complicated ClassLoader hierarchies or OSGi environments.[Read More]

Sunday April 19, 2015

Apache OpenWebBeans-1.5.0 has been released

The Apache OpenWebBeans Team is proud to announce the release of the Apache OpenWebBeans-1.5.0 project which implements a CDI-1.2 container.

OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to big Java EE7 server clusters with complicated ClassLoader hierarchies or OSGi environments.

[Read More]

Wednesday June 12, 2013

Apache OpenWebBeans-1.2.0 has been released

The Apache OpenWebBeans Team is proud to announce the release of

Apache OpenWebBeans-1.2.0

Apache OpenWebBeans is an Apache License v2 licensed implementation of the JSR-299 "Context and Dependency Injection for Java EE" and JSR-330 "atinject" specifications. OpenWebBeans has a modular structure and provides Dependency Injection scaling from Java SE environments up to EE6 server clusters with complicated ClassLoader hierarchies or OSGi environments.

openwebbeans-1.2.0 implements the CDI-1.0 API, passes the JSR-330 TCK and the JSR-299 standalone TCK.

Distribution packages can be downloaded from

http://www.apache.org/dyn/closer.cgi/openwebbeans/1.2.0/

The release is also available in maven.central

http://repo1.maven.apache.org/maven2/org/apache/openwebbeans/

More info can be found at

http://openwebbeans.apache.org

The Apache OpenWebBeans Team  

Welcome Romain Manni-Bucau as new OpenWebBeans PMC member

The Apache OpenWebBeans team is proud to announce that Romain Manni-Bucau has accepted the invitation to our Project Management Committee.

Romain has been contributing to OpenWebBeans for a few years and responsible for integrating OWB into Apache TomEE.

Welcome on board, Romain!

Friday February 15, 2013

News from OpenWebBeans-1.2.0

The Apache OpenWebBeans team has been quite busy with big refactorings. Big improvements have been made to the proxying mechanism, the Bean scanning and the AnnotatedType handling. We managed to improve the overall performance again and now deliver almost native Java like performance for our NormalScoping proxies.

Parts which are already implemented

Let's take a close look at a few details of the parts we already finished and explain them briefly.

Split between NormalScoping Proxies and Interceptor Proxies

In OpenWebBeans 1.0.x and 1.1.x a single Bean only had one single Proxy handling for all tasks - The NormalScopedBeanInterceptorHandler. This did handle all the stuff like Interceptors, Decorators provide subclassing for abstract Decorators but also did the NormalScope handling.

As result of this unified handling we only stored the native Contextual Instances in the Contexts (Session, Request map, Conversation map, etc). The negative side effect of this approach was that we had to introduce a quite hacky mechanism to regain access to the CreationalContext. Needless to say that this was not only complex but also error prone.

In OpenWebBeans-1.2.0 we now maintain 2 proxies. The first one solely handles NormalScoping, then 2nd one does all the Interceptor and Decorator stuff. The most important change is that we apply the DecoratorProxy directly 1:1 on the Contextual Instance and thus don't need to do any of those weird CreationalContext hacks anymore. Instead the already intercepted/decorated instance gets stored in the Context.

All NormalScope proxies now implement the Interface OwbNormalScopeProxy and have a name *$OwbNormalScopeProxy*.

All Interceptor and/or Decorator proxies implement the Interface OwbInterceptorProxy and have a name *$OwbInterceptProxy*.

Additionally to those 2 proxies we also introduced a new separate proxy kind for creating subclasses for abstract Decorators which now implement the marker interface OwbDecoratorProxy.

Creating our own proxy bytecode

For performance reasons we moved from using Javassist (where we fixed quite a few mem leaks in the past) to generating our own native Java ByteCode with ASM. We now only use reflection if really necessary. For standard NormalScoping of public methods we e.g. generate the following code. Consider a simple User class:

public class User {
   public String getGivenName() { return "Hans"; }
}

For this class the generated bytecode of an OwbNormalScopeProxy will look like the following:

public class User$OwbNormalScopeProxy0 extends User {
  private Provider owbContextualInstanceProvider;
 
  public String getGivenName() {
    return owbContextualInstanceProvider.get().getGivenName();
  }
}

There is no bells and whistle and especially no reflection - just pure plain Java bytecode which is blazingly fast!

Btw, we do very similar stuff for non-intercepted methods of intercepted/decorated classes. And we also improved the handling of intercepted methods and are now more than twice as fast as OWB-1.1.7 (which was already very fast). 

Cleaning up the Bean creation

In the past we had 2 ways to create beans. If an Extension used ProcessAnnotatedType to tweak the AnnotatedType of a class then we built the Bean<T> from the modified AnnotatedType<T>. For cases where the AnnotatedType did not get modified we took a completely different part and created the Bean from the Class reflection information. This part came from a time where there was no AnnotatedType in the spec yet.

In OWB-1.2.0 we now do all the Bean<T> construction based on the AnnotatedType - regardless if it got provided by a CDI-Extension or remained unchanged. This made our codebase much easier to maintain! Arne also did a great job by introducing and cleaning up all the BeanBuilders and making the final Bean<T> immutable.

Parts waiting to be done

More new things to come before the release:

  • Replace Scannotation by xbean-finder.
  • Create the initial AnnotatedTypes from the information already collected by xbean-finder instead of doing expensive Class reflection.

CDI-1.0 or CDI-1.1?

We initially targeted CDI-1.1 with this release. But during the development we figured that we do not yet need to. All the parts introduced so far are perfectly working with CDI-1.0 as well. Thus it looks like we gonna release OWB-1.2.0 as still being CDI-1.0. But we are well prepared to support the new features of CDI-1.1 very quickly as we already did all the preparations. Sometimes we internally already use CDI-1.1 mechanisms (like the BeanAttributs) and only have to add 'implements RandomCdi11FeatureInterface'. This will likely be shipped as OWB-2.0.0 though when the spec hits an almost final status and the TCK is available.

How to Test

That's a pretty easy thing. If you have the apache.snapshots maven repo in your build, then you can just reference owb 1.2.0-SNAPSHOT in your build and you're done!

Saturday January 19, 2013

Welcome Arne Limburg as new OpenWebBeans PMC member

The Apache OpenWebBeans team is proud to announce that Arne Limburg has accepted the invitation to our Project Management Committee.

Arne has been working on OpenWebBeans for a few years, is using it for big customers and helped a lot with fixing bugs and moving OWB forward to CDI-1.1.

Welcome on board, Arne!

Calendar

Search

Hot Blogs (today's hits)

Tag Cloud

Categories

Feeds

Links

Navigation