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