Giriş
Eski kodlarda şu satırı dahil ederiz
contextInitialized metodu
Açıklaması şöyle.
Yükleme esnasında servlet context'ine nesne eklemek mümkün. Şöyle yaparız.
Bazı değerleri atamak için şöyle yaparız.
web.xml Dosyasında Nasıl Tanımlanır?
Şöyle tanımlanır.
Yeni Java Servlet'leri ile xml kullanmaya gerek yok. Sınıfın başına @WebListener tag'i ekleyerek xml tanımından kurtulmak mümkün. Şöyle yaparız.
import javax.servlet.ServletContextListener;
Açıklaması şöyle.Bu sınıf servlet ilk defa yüklenirken çağrılır. İskeleti şöyle tanımlanırInterface for receiving notification events about ServletContext lifecycle changes.In order to receive these notification events, the implementation class must be either declared in the deployment descriptor of the web application, annotated with WebListener, or registered via one of the addListener methods defined on ServletContext.
public class ApplicationContext implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
...
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
...
}
}
Çalışma sırası muhtemelen şöyle.web.xml okunur -> Servlet Yüklenir -> ServletContextListener çağrılır
contextDestroyed metodu
Örnek
Şöyle yaparız
import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.annotation.WebListener;@WebListenerpublic class MyServletContextListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent event) {System.out.println("context started on "+ event.getServletContext().getContextPath());}@Overridepublic void contextDestroyed(ServletContextEvent event) {System.out.println("context destroyed");}}
Açıklaması şöyle.
ÖrnekReceives notification that the web application initialization process is starting.
Yükleme esnasında servlet context'ine nesne eklemek mümkün. Şöyle yaparız.
servletContextEvent.getServletContext().setAttribute("dao",new ClientDaoImpl();
ÖrnekBazı değerleri atamak için şöyle yaparız.
@Override
public void contextInitialized(final ServletContextEvent event)
{
final String props = "/file.properties";
final Properties propsFromFile = new Properties();
try
{
propsFromFile.load(getClass().getResourceAsStream(props));
}
catch (final IOException e)
{
// can't get resource
}
for (String prop : propsFromFile.stringPropertyNames())
{
if (System.getProperty(prop) == null)
{
System.setProperty(prop, propsFromFile.getProperty(prop));
}
}
}
Diğerweb.xml Dosyasında Nasıl Tanımlanır?
Şöyle tanımlanır.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="..."
xmlns:xsi="..."
xsi:schemaLocation="..."
version="3.1">
...
<listener>
<listener-class>com.taxi.service.utils.ApplicationContext</listener-class>
</listener>
...
</web-app>
@WebListener AnotasyonuYeni Java Servlet'leri ile xml kullanmaya gerek yok. Sınıfın başına @WebListener tag'i ekleyerek xml tanımından kurtulmak mümkün. Şöyle yaparız.
@WebListener
public class ReportingScheduler implements ServletContextListener {
private ScheduledExecutorService scheduler;
@Override
public void contextInitialized(ServletContextEvent event) {
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new ReportingJob(), 0, 10, TimeUnit.MINUTES);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
scheduler.shutdownNow();
}
}
Hiç yorum yok:
Yorum Gönder