Статьи

Введение в Siwpas: сервер веб-профилей, совместимый с Java EE

Siwpas , сервер приложений Simple Web Profile, предоставляет среду выполнения для платформы « Java EE 6.0 Web Profile ».

Что такое веб-профиль Java EE ?

Согласно спецификации веб-профиля, контейнер веб-профиля должен поддерживать следующие технологии,

  • Сервлет 3.0
  • JavaServer Pages (JSP) 2.2
  • Язык выражений (EL) 2.2
  • Поддержка отладки для других языков (JSR-45) 1.0
  • Стандартная библиотека тегов для страниц JavaServer (JSTL) 1.2
  • JavaServer Faces (JSF) 2.0
  • Общие аннотации для Java-платформы (JSR-250) 1.1
  • Enterprise JavaBeans (EJB) 3.1 Lite
  • API транзакций Java (JTA) 1.1
  • Java Persistence API (JPA) 2.0
  • Bean Validation 1.0
  • Управляемые Бобы 1.0
  • Перехватчики 1.1
  • Контексты и внедрение зависимостей для платформы Java EE 1.0
  • Внедрение зависимостей для Java 1.0 

Siwpas поддерживает все вышеперечисленные технологии для обеспечения времени выполнения, совместимого с веб-профилем Java EE. Он реализован на основе «Apache Tomcat 7 Servlet & JSP container» и нескольких проектов Apache Software Foundation Java EE.

Вы можете загрузить и получить дополнительную информацию со страницы спецификации JCP: JSR 316: спецификация платформы JavaTM, Enterprise Edition 6 (Java EE 6) ,
http://jcp.org/en/jsr/detail?id=316

Функции Siwpas

Использование функций EJB 3.1 в WAR

Веб-профиль Java EE позволяет использовать функции « EJB 3.1 », встроенные непосредственно в веб-компоненты Java EE. Вы можете использовать следующие функции EJB 3.1 непосредственно
в своем веб-приложении (ах).

  • Компоненты @Stateless, @Stateful и @Singleton EJB,
  • @Local, @LocalBean (без интерфейса) клиентские представления компонентов EJB,
  • Транзакция, Перехватчик, Безопасность контейнерных услуг.

Компоненты EJB имеют тот же контекст JNDI с веб-приложением, в котором они развернуты. Это означает, что компоненты EJB могут искать любые ссылки из контекста jndi веб-приложения. Вы также можете использовать переносимые глобальные имена jndi EJB для внедрения компонентов EJB в ваши веб-компоненты. Глобальные имена jndi переносимы. Это означает, что вам не нужно изменять jndi-имена ваших контекстных поисков в других контейнерах Java EE.

Например, вы можете искать прокси компонентов EJB из контекста JNDI, например,

InitialContext context = new InitialContext();

//Looking up from global jndi context
context.lookup("java:global/module_name/bean_name")
context.lookup("java:global/module_name/bean_name!Interface Name")

//Looking up from application jndi context
context.lookup("java:app/module_name/bean_name");
context.lookup("java:app/module_name/bean_name!Interface Name")

//Looking up from module jndi context
context.lookup("java:module/bean_name")
context.lookup("java:module/bean_name!Interface Name")

Имя модуля — это имя вашего веб-приложения. Имя компонента — это имя компонента EJB. Имя интерфейса — это имя интерфейса, который реализует компонент EJB.

Веб-компоненты могут внедрять компоненты EJB, используя технологию « CDI (Context and Dependency Injection) » или напрямую, используя аннотацию « @EJB ».

Например, вы можете использовать компоненты EJB в качестве «управляемых компонентов JSF» или внедрить их в качестве бизнес-сервисов в управляемые компоненты JSF на основе POJO.

Пример: использование компонента EJB в качестве управляемых компонентов

@Stateless
@LocalBean
@Named("paymentService")
@RequestScoped
public class PaymentService{

public String pay(){
.......
}

}

ИЛИ ЖЕ

внедрить EJB в управляемый компонент на основе POJO,

@Named("paymentService")
public class PaymentBean{

//Injection using CDI
@Inject PaymentService paymentService;

//Injection using @EJB
@EJB PaymentService paymentService;

public String pay(){
paymentService.pay();
}
}

Использование функций CDI в WAR

SIwpas полностью поддерживает спецификацию JSR-299 через проект Apache OpenWebBeans . Кроме того, вы можете использовать перехватчики и декораторы на основе JSR-299 для компонентов EJB.
Вы можете добавить компоненты EJB в компоненты CDI и наоборот.

Более того, SIwpas поддерживает добавление следующих ресурсов в ваши компоненты CDI.

  • @ Ресурсная аннотация для внедрения: DataSource, UserTransaction, ValidatorFactory, Validator, TransactionManager, TransactionSynchronizationRegistry, ORB
  • Аннотация @EJB для добавления компонентов EJB,

Вы также можете использовать перехватчики и декораторы на основе JSR-299 для ваших компонентов EJB.

Пример:

@Interceptor @PaymentLog
public PaymentInterceptor{

@AroundInvoke
public Object beforePayment(InvocationContext ctx) throws Exception{
logger.log(....);
return ctx.proceed();
}
}

@Stateless
public class PaymentService implements IPaymentService{

@PaymentLog
public void pay(...){
...
}
}

 Здесь @PaymentLog является привязкой перехватчика. Он привязывает «PaymentInterceptor» к методу payService Payment ().

Вы также можете использовать Decorators для компонентов EJB. Достаточно объявить класс декоратора, который также реализует интерфейс клиента EJB-компонента.

@Decorator
public PaymentDecorator implements IPaymentService{
private @Inject @Delegate IPaymentService paymentService;

public void pay(...){
//Any business operation you want to do before actual paymentService
System.out.println(.....);

//Actual business method execution
this.paymentService.pay(...);
}
}

Вы не забудьте добавить определения перехватчиков и декораторов в ваш «beans.xml» для их включения.

SIwpas Другие функции

Множество интересных и новых функций предоставлено платформой Java EE 6 . SIwpas поддерживает их всех.

Например,

  • Поддержка аннотаций @DataSourceDefinitions и @DataSourceDefinition,
  • Поддержка аннотаций @Resource (lookup = «lookup name»),
  • @ManagedBean поддержка аннотаций для POJO,
  • Функции Servlet 3.0, такие как @WebServlet, @WebListener для определения сервлетов и слушателей,
  • Особенности EL 2.2,
  • И более…

Будущее Siwpas
Мы предоставим классную « консоль SIwpas » для управления внутренними объектами сервера приложений SIwpas и их анализа. Наша цель — внедрить консоль SIwpas с использованием JSF 2. Это позволит вам настраивать и управлять всеми аспектами SIwpas, такими как конфигурация контейнера EJB, список записей jndi, приложения развертывания / отмены развертывания, диаграммы производительности, конфигурация протокола и многое другое.

Как вы уже знаете, Oracle TCK для тестирования контейнеров Java EE не имеют открытого исходного кода. Поэтому мы не знаем, будем ли мы запрашивать сертификацию у Oracle или нет за совместимость с Java EE Web Profile.Технические характеристики. Если бы Oracle мог предоставить нам бесплатный пакет TCK для тестирования нашего сервера приложений, мы бы точно могли его использовать 🙂 Я бы хотел, чтобы JCP и TCK были более открытыми.

Информация о проекте Siwpas

Веб-страница проекта
http://siwpas.mechsoft.com.tr

Страница выпуска проекта
http://siwpas.mechsoft.com.tr/bugs

Место загрузки

http://siwpas.mechsoft.com.tr/downloads

Наслаждайтесь!

Член АФС, http://apache.org

Председатель PMC, Apache OpenWebBeans

Технический директор, MechSoft Механические и программные решения, http://www.mechsoft.com.tr