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?