Thursday, October 21, 2010

Apache OpenEJB 3.1.3 Has Released

Apache OpenEJB 3.1.3 released!

Lots of exciting stuff for a dot release!

Tuesday, October 19, 2010

Azul Systems Announces Zing™ Platform GA Availability

From announcement,
"Azul Systems®, the award-winning Java platform provider, today announced the general availability of Zing™, the first elastic runtime platform for Java applications. Zing is a highly scalable, low latency Java runtime platform designed to improve application throughput, availability, and manageability, while also enhancing infrastructure and operational efficiency.

It is a versatile platform for deploying Java applications of all sizes and configurations, and is especially suited for high volume applications where response times are important such as Web portals, trading platforms and e-commerce websites. Zing is also the only Java runtime platform specifically designed and optimized for virtualized and cloud environments."


For full press release, see http://tiny.cc/tfizz

Apache OpenWebBeans 1.0.0 Has Released

The Apache OpenWebBeans Team is proud to announce the final release of Apache OpenWebBeans 1.0.0.

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

1.0.0 implements the latest API, passes the JSR-330 TCK and the JSR-299 standalone TCK.

The release can be downloaded from

http://www.apache.org/dyn/closer.cgi/openwebbeans/1.0.0/
http://www.apache.org/dist/openwebbeans/1.0.0/


The Apache OpenWebBeans Team

Tuesday, October 12, 2010

CDI (Context and Dependency Injection) and Apache OpenWebBeans Training

Hello folks;

I am planning to give JSR-299 (Context and Dependency Injection for Java EE Platform) and Apache OpenWebBeans online training.

Training content is
  • Introduction to Java EE 6 Platform
  • CDI Architecture
  • CDI Definitons and Concepts
  • CDI Programming Model
  • CDI Bean Inheritance and Specialization
  • CDI Injection Mechanism
  • Using CDI with EL in JSF
  • CDI Bean Lifecycles
  • CDI Decorators and Interceptors
  • CDI Loosely Coupled Event Models
  • Writing CDI Portable Extensions
  • CDI Packaging and Deployment Model
  • Introduction to Apache OpenWebBeans
  • Using Apache OpenWebBeans in Web Applications
  • Using Apache OpenWebBeans with OpenEJB
  • Samples and Examples
Training will take 2 days.

We have been getting pre-registration for online training.

You could register for the training from
http://mechsoft.com.tr/Mechsoft/software/en/onkayit.html

Monday, October 11, 2010

Introduction to SIwpas, Java EE Compatible Web Profile Server

SIwpas, Simple Web Profile Application Server provides runtime for "Java EE 6.0 Web Profile" platform.SIwpas is licensed under an ASL.

What is Java EE Web Profile?
According to the web profile specification, web profile container must support following technologies,
  • Servlet 3.0
  • JavaServer Pages (JSP) 2.2
  • Expression Language (EL) 2.2
  • Debugging Support for Other Languages (JSR-45) 1.0
  • Standard Tag Library for JavaServer Pages (JSTL) 1.2
  • JavaServer Faces (JSF) 2.0
  • Common Annotations for theJava Platform (JSR-250) 1.1
  • Enterprise JavaBeans (EJB) 3.1 Lite
  • Java Transaction API (JTA) 1.1
  • Java Persistence API (JPA) 2.0
  • Bean Validation 1.0
  • Managed Beans 1.0
  • Interceptors 1.1
  • Contexts and Dependency Injection for the Java EE Platform 1.0
  • Dependency Injection for Java 1.0 
SIwpas supports all of the above technologies to provide Java EE Web Profile compatible runtime. It is implemented based on "Apache Tomcat 7 Servlet & JSP container" and several Apache Software Foundation Java EE projects.

You could download and get more information from the JCP Page of the specification: JSR 316: JavaTM Platform, Enterprise Edition 6 (Java EE 6) Specification,
http://jcp.org/en/jsr/detail?id=316

SIwpas Features

Using EJB 3.1 Features in WAR

Java EE Web Profile enables you to use "EJB 3.1" features embedded directly in your Java EE Web components. You can use following EJB 3.1 features directly
in your web application/s.
  • @Stateless, @Stateful and @Singleton EJB components,
  • @Local, @LocalBean (no interface) client views of EJB components,
  • Transaction, Interceptor, Security container services.
EJB components share same JNDI context with web application that they are deployed into. It means that  EJB components can lookup any references from web application jndi context. You can also use EJB portable global jndi names to inject EJB components into your web components. Global jndi names are portable. It means that you are not required to change jndi names of your context lookups in other Java EE containers.

For example, you can lookup EJB component's proxies from JNDI context like,
 
01.InitialContext context = new InitialContext();
02. 
03.//Looking up from global jndi context
04.context.lookup("java:global/module_name/bean_name")
05.context.lookup("java:global/module_name/bean_name!Interface Name")
06. 
07.//Looking up from application jndi context
08.context.lookup("java:app/module_name/bean_name");
09.context.lookup("java:app/module_name/bean_name!Interface Name")
10. 
11.//Looking up from module jndi context
12.context.lookup("java:module/bean_name")
13.context.lookup("java:module/bean_name!Interface Name")

Module name is your web application name. Bean name is EJB component name. Interface name is name of the interface that EJB component implements.
Web components  are able to inject EJB components using "CDI (Context and Dependency Injection)" technology or directly using "@EJB" annotation.

For example, you can use EJB components as "JSF managed beans" or inject them as business services into POJO based JSF managed beans.
Example: Using EJB component as managed beans
 
01.@Stateless
02.@LocalBean
03.@Named("paymentService")
04.@RequestScoped
05.public class PaymentService{
06.    
07.   public String pay(){
08.       .......
09.   }
10. 
11.}

OR
inject EJB into POJO based managed bean,
 
01.@Named("paymentService")
02.public class PaymentBean{
03. 
04.    //Injection using CDI
05.    @Inject PaymentService paymentService;
06. 
07.    //Injection using @EJB
08.    @EJB PaymentService paymentService;
09. 
10.    public String pay(){
11.        paymentService.pay();
12.    }
13.}
 
Using CDI Features in WAR
SIwpas fully supports JSR-299 specification via Apache OpenWebBeans project. Moreover, you can use JSR-299 based interceptors and decorators for EJB components.
You can inject EJB components into CDI Beans and vice-versa.

Moreover, SIwpas supports for injecting the following resources into your CDI Beans
  • @Resource annotation to inject : DataSource, UserTransaction, ValidatorFactory, Validator, TransactionManager, TransactionSynchronizationRegistry, ORB
  • @EJB annotation to inject EJB components,
You can also use JSR-299 based interceptors and decorators for your EJB components.
Example:
01.@Interceptor @PaymentLog
02.public PaymentInterceptor{
03. 
04.    @AroundInvoke
05.    public Object beforePayment(InvocationContext ctx) throws Exception{
06.         logger.log(....);
07.         return ctx.proceed();
08.    }
09.}
10. 
11.@Stateless
12.public class PaymentService implements IPaymentService{
13. 
14.   @PaymentLog
15.   public void pay(...){
16.       ...
17.   }
18.}

 Here, @PaymentLog is an interceptor binding. It binds "PaymentInterceptor" to PaymentService pay() method.
You can also use Decorators for EJB components. It is enough to declare decorator class that also implements EJB component client interface.
 
01.@Decorator
02.public PaymentDecorator implements IPaymentService{
03.  private @Inject @Delegate IPaymentService paymentService;
04. 
05.  public void pay(...){
06.     //Any business operation you want to do before actual paymentService
07.     System.out.println(.....);
08.       
09.     //Actual business method execution
10.     this.paymentService.pay(...);
11.  }
12.}
You do not forget to add interceptor & decorator definitions into your "beans.xml" for enabling them.

SIwpas Other Features
Lots of cool and new features are provided with Java EE 6 platform. SIwpas supports all of them.

For example,
  • @DataSourceDefinitions and @DataSourceDefinition annotation support,
  • @Resource(lookup="lookup name") annotation support,
  • @ManagedBean annotation support for POJOs,
  • Servlet 3.0 features, like @WebServlet, @WebListener for defining servlets and listeners,
  • EL 2.2 features,
  • And more...
Future of SIwpas
We will provide a cool "SIwpas Console" to manage and introspect internals of SIwpas application server. Our aim is to implement SIwpas console using JSF 2. It will enable you to configure and manage every aspects of SIwpas, such as, EJB container configuration, listing jndi entries, deploy/undeploy applications, performance charts, protocol configuration and much more.

As you have already know that Oracle TCK's for  testing Java EE containers are not open source. Therefore, we do not know whether we will request certification from Oracle or not  for being compatible with Java EE Web Profile specification. If Oracle could provide us free TCK suite to test our application server, we could definitely use it :) I wish JCP and TCKs would be more open.

Sunday, October 10, 2010

SIwpas, Java EE Web Profile Compatible Server CR4 Has Released

Hello folks,

We have released our Java EE Web Profile Application Server CR4. There were some regression on CR3 therefore we have released CR4.

Check release documentation about new features from README_CR4

Please report your feedbacks! And what you want in CR5.

Download CR4 from DOWNLOAD section

Enjoy!