IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Weblogic Java Discussion :

Non conservation en mémoire d'objets STATIC


Sujet :

Weblogic Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut Non conservation en mémoire d'objets STATIC
    Bonjour,

    J'ai un soucis avec mon serveur weblogic 8.1sp5. (Java 1.4.2).

    Dans mon application web struts, j'ai des variables en static stockées dans une classe statique.

    J'initialise leurs valeurs au début de mon application, quand un utilisateur se connecte.

    Seulement, dès que je souhaite y accéder quelques actions plus loin, je me rends compte qu'elle ont été supprimées, comme si le Garbage Collector était passé par la.

    J'ai testé l'application , sans rien changer au code, sur un serveur Apache Tomcat 5.0 et la il n'y a pas de soucis : Mes valeurs sont bien gardées en mémoire.

    De plus, j'utilise log4j : pour l'initialiser, j'utilise une servlet d'initialisation déclarée comme ceci :

    web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <servlet>
    		<servlet-name>LogServlet</servlet-name>
    		<servlet-class>package.LogServlet</servlet-class>
    		<init-param>
    			<param-name>filename</param-name>
    			<param-value>log4j.properties</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    LogServlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public final void init(final ServletConfig config) 
    	throws javax.servlet.ServletException {
    		final String filename = config.getInitParameter("filename");
    		final URL url = Thread.currentThread().
    			getContextClassLoader().getResource(filename);
    		PropertyConfigurator.configure(url);
    Jusque la, rien d'anormal. Seulement le système de log ne fonctionne pas sur Weblo (Tomcat, oui). Et c'est au moment que je fait fait un "undeploy" de mon appli dans la console weblogic que j'apercois cette erreur :

    ####<15 mai 2008 17 h 22 CEST> <Error> <HTTP> <serveur> <ExecuteThread: '2' for queue: 'weblogic.admin.RMI'> <<WLS Kernel>> <> <BEA-101268> <ServletContext(id=7121963,name=appli,context-path=/appli): Failed while destroying servlet: LogServlet.
    java.lang.Throwable
    at javax.servlet.GenericServlet.getServletContext(GenericServlet.java:205)
    at javax.servlet.GenericServlet.log(GenericServlet.java:300)
    at javax.servlet.GenericServlet.destroy(GenericServlet.java:122)
    at weblogic.servlet.internal.ServletStubImpl$ServletDestroyAction.run(ServletStubImpl.java:1130)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.ServletStubImpl.destroyServlet(ServletStubImpl.java:671)
    at weblogic.servlet.internal.ServletStubImpl.destroyServlet(ServletStubImpl.java:698)
    at weblogic.servlet.internal.ServletStubImpl.destroyServlet(ServletStubImpl.java:683)
    at weblogic.servlet.internal.WebAppServletContext.destroyServlet(WebAppServletContext.java:6429)
    at weblogic.servlet.internal.WebAppServletContext.destroyServlets(WebAppServletContext.java:6410)
    at weblogic.servlet.internal.WebAppServletContext.destroy(WebAppServletContext.java:6257)
    at weblogic.servlet.internal.ServletContextManager.destroyContext(ServletContextManager.java:205)
    at weblogic.servlet.internal.HttpServer.unloadWebApp(HttpServer.java:786)
    at weblogic.servlet.internal.WebAppModule.destroyContexts(WebAppModule.java:755)
    at weblogic.servlet.internal.WebAppModule.deactivate(WebAppModule.java:909)
    at weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3356)
    at weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2306)
    at weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2251)
    at weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:2028)
    at weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:794)
    at weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:264)
    at weblogic.application.ApplicationService.forceSuspend(ApplicationService.java:82)
    at weblogic.t3.srvr.SubsystemManager.forceSuspend(SubsystemManager.java:201)
    at weblogic.t3.srvr.T3Srvr.forceSuspend(T3Srvr.java:1088)
    at weblogic.t3.srvr.ServerRuntime.uprotectedForceShutdown(ServerRuntime.java:679)
    at weblogic.t3.srvr.ServerRuntime.access$300(ServerRuntime.java:88)
    at weblogic.t3.srvr.ServerRuntime$4.run(ServerRuntime.java:614)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.t3.srvr.ServerRuntime.forceShutdown(ServerRuntime.java:610)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
    at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
    at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
    at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:948)
    at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:492)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:435)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:430)
    at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:35)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    C'est comme si il voulait la supprimer mais qu'il ne peut pas car elle a déjà été supprimée.

    C'est comme si le serveur weblogic passait par une étape de réinitialisation au début et qu'il me supprimait de la mémoire les objets crées.

    Est-ce un problème de configuration du serveur? Quelqu'un a-t-il déjà eu ce problème?

  2. #2
    Membre confirmé
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Points : 555
    Points
    555
    Par défaut
    Ce cas peut se produire s'il y a une Exception ou Error qui se produit dans le code d'initialisation. Vérifie avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {
      //ton code
    }
    catch (Throwable t) {
     t.printStackTrace().
    }
    Le cas le plus classique est : NoClassDefFoundError....
    Benoit Moussaud - XebiaLabs - Automatisation des déploiements. Screencast & Demo

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Effectivement, j'ai un NoClassDefFoundError...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.lang.NoClassDefFoundError: org/apache/commons/collections/CursorableLinkedList$Cursor
            at org.apache.commons.collections.CursorableLinkedList.cursor(Unknown Source)
            at org.apache.commons.pool.impl.GenericKeyedObjectPool.evict(GenericKeyedObjectPool.java:954)
            at org.apache.commons.pool.impl.GenericKeyedObjectPool$Evictor.run(GenericKeyedObjectPool.java:1156)
            at java.lang.Thread.run(Thread.java:534)
    Pourtant le package collections fait bien partie du CLASSPATH, comme tous les autres packages que j'utilise.

    A noter que j'utilise commons-pool 1.2 : sur le site il est écrit que cette librairie nécessite commons-collections "at runtime". C'est ici que ca coince? J'ai essayé de placer le jar dans le dossier common/lib du serveur weblogic mais cela ne change rien

  4. #4
    Membre actif Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 257
    Points
    257
    Par défaut
    Quelle est la version de ton jar commons-collections ? Il faudrait vérifier la compatibilité des versions entre ces 2 produits: étant donné que commons-pool 1.2 n'est pas la dernière version en date, il est possible qu'il ne fonctionne pas correctement avec la dernière version de commons-collections

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut
    Bonjour,


    J'utilise actuellement le jar commons-collections 2.1. Seulement sur le site de commons-pool, je ne trouve pas la version de collections nécessaires :/

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2005
    Messages : 47
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Alors voila, j'avais oublié de signaler un détail : Mon Appli est déployée sur un serveur Weblogic A, mais le pool de connexions utilisé dans mon appli est déployée sur un serveur WebLogic B.

    - En déployant mon application sur un serveur Tomcat et en utilisant le pool de B, il n'y a pas de problèmes.

    - En déployant mon application sur A et en utilisant le pool de B, PROBLEMES

    - En déployant mon application sur A et en utilisant un nouveau pool sur A, il n'y a pas de problèmes.

    - En déployant mon application sur B et en utilisant le pool de B, il n'y a pas de problèmes.

    J'avais trouvé sur Internet le message d'une personne qui avait à peu près le même problème que moi et qui l'avait résolu en modifiant l'heure de son serveur : problème de synchronisation parait-il...
    J'ai testé cette solution mais cela n'avait rien changé donc j'ai laissé tombé.

    Je crois donc que le problème actuel est en fait bien un problème de "synchro" ou un "truc dans ce genre"

    Toujours est-il que je vais considérer ce problème comme résolu même s'il ne l'est pas totalement lol.

    Si vous avez des idées

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.0] Comment connaître les objets conservés en mémoire ?
    Par Pilloutou dans le forum Framework .NET
    Réponses: 3
    Dernier message: 21/11/2006, 18h33
  2. conserver ma liste d'objets sans Pointeur Null ...
    Par comme de bien entendu dans le forum Général Java
    Réponses: 8
    Dernier message: 24/03/2006, 11h55
  3. Problème de Tableau (non conservé sous ie)
    Par dj-julio dans le forum Langage
    Réponses: 12
    Dernier message: 23/12/2005, 11h19
  4. [Cookies] include non persistant en mémoire
    Par ouioui2000 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2005, 15h07
  5. Je recherche un composant Tree non visuel, structure mémoire
    Par bambino3996 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/09/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo