2017-10-19 5 views
-2

J'ai une application Java principale exécutée dans un environnement tomcat. Maintenant, j'ai écrit une classe java, mettez-la dans un fichier JAR et dans le dossier lib TCs. Je peux accéder à cette classe maintenant dans l'application principale en important la classe et en appelant le constructeur.Comment créer une classe Java pendant le démarrage de Tomcat?

est-il un moyen de créer cette classe une fois au démarrage TCs. donc je peux accéder aux variables des classes?

Merci! e.

// EDIT 1 ici est mon exemple:

Beach.java

public class Beach { 
    public static void main(String []args) { 
     System.out.println("***********************"); 
    } 
} 

MyAppServletContextListener.java

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

public class MyAppServletContextListener implements ServletContextListener{ 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     System.out.println("**************** ServletContextListener started"); 
     Beach x = new Beach(); 

    } 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    } 
} 

tout cela va dans un fichier jar et dans: ... /WEB-INF/lib/beach.jar

et ceci est mon plus Web.xml:

<web-app> 
    <listener> 
    <listener-class> 
      MyAppServletContextListener 
     </listener-class> 
    </listener> 
</web-app> 

et ceci est l'erreur server.log:

10:42:26,440 | ERROR | [[/APP]] | Error configuring application listener of class MyAppServletContextListener 
java.lang.ClassNotFoundException: MyAppServletContextListener 
+1

Semble que vous cherchez le [singleton] (https://en.wikipedia.org/wiki/Singleton_pattern). – Andreas

Répondre

2

Vous pouvez créer une classe implémentant ServletContextListener

Une fois enregistré cette classe vous permettra invoquer le constructeur désiré.

public class MyAppServletContextListener implements ServletContextListener{ 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     YourClass x = new YourClass(); 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    } 
} 

Vous devez inscrire cette classe dans le web.xml:

<web-app ...> 
    <listener> 
    <listener-class> 
      com.yourpackage.MyAppServletContextListener 
     </listener-class> 
    </listener> 
</web-app> 
+0

salut @Nirekin merci beaucoup. je ne suis pas trop familier avec ce suffire .. comme vous pouvez le remarquer :) j'ai mis à jour mes actions dans le fil ... TC ne peut pas trouver la source :(merci! – Ele

+0

dans le web.xml vous devez ajouter le paquet à votre class 'com.yourpackage.MyAppServletContextListener' – Nirekin

+0

super merci !!!! – Ele