вторник, 15 сентября 2009 г.

Как выполнить определенный код при старте app-сервера

На днях у меня возникла необходимость запустить шедулер на стороне app-сервера. Про сам шедулер я напишу в одном из следующих сообщений, а про технологию запуска чего-либо при старте апп-сервера расскажу сейчас...

Вообщем надо поправить файл web.xml , если вы не используете веб компоненту в своем энтерпрайз проекте, придется создать пустой проект с одним этим файлеком.


<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://java.sun.co">
<listener>
<listener-class>myproject.ejb.MyContextListener</listener-class>
</listener>
</web-app>

Это тот класс, методы которого будут вызываться, когда изменяется контекст сервлета.

package myproject.ejb.MyContextListener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyContextListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContextListener::contextDestroyed");
}

public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContextListener::contextInitialized");
}
}


как-то так :)

пятница, 10 июля 2009 г.

manual javaee realm

Недавно я писал о том, как настроить jdbc realm в glassfish. Сейчас я попытаюсь рассказать, о том, как написать свой realm самому.

Итак, что же такое этот realm?
Realm - это такой механизм, отвечающий за аутентификацию пользователя на сервере приложений. Когда пользователь (точнее говорить principal) пытается получить доступ к какому-либо ресурсу сервера приложений, если для этого нужна авторизация, то realm используется для получения списка групп, в которых состоит пользователь. На основании этого списка решается - позволено ли данному пользователю воспользоваться данным ресурсом (будь то java-bean, jdbc-datasource и т.д.).

В совокупности с JAAS фреймворком они представляют собой подсистему аутентификации glassfish`а.

Для того, что бы написать свой realm для glassfish v2.1 необходимо реализовать два класса:

com.sun.appserv.security.AppservRealm
com.sun.appserv.security.AppservPasswordLoginModule

как вы их будите реализовывать, ваше дело, советую глянуть это и это в качестве примера

и добавить информацию о них в:

domain_dir/config/domain.xml
domain_dir/config/login.conf

замечание: для того что бы эти классы были видны в IDE я подкинул им пару jar-ов из glassfish`a, которые после билда можно исключить из списка файлов, т.к. они уже есть на сервере приложений:
glassfish_dir/lib/appserv-ext.jar
glassfish_dir/lib/appserv-rt.jar