2012-04-08 3 views
3

Ich versuche herauszufinden, warum ein Teil meiner Anwendung plötzlich nicht mehr funktioniert. Ich benutze Spring 1 mit Weblogic 8.1.4.0 und Hibernate. Der Berichtgenerator ist der Teil, der fehlgeschlagen ist, zuerst auf unserem Produktionsserver, dann auf den Dev- und Qa-Servern am Freitag, während ich experimentierte. Ich habe keine Änderungen am Code vorgenommen, aber ich erhalte jetzt eine Ausnahme für fehlende Datenquellen in der Kompilierungsanweisung einer Zuordnungsabfrage. Das einzige, was sich geändert hat, waren ein paar Datensätze in der Datenbank, aber es waren ziemlich einfache Änderungen, von denen ich bezweifle, dass sie Auswirkungen hatten. Ich habe auch die folgende Fehlermeldung von Freitag um die Zeit, dass die beiden Entwicklungs Anwendungen versagt haben:ContextLoader: Kontextinitialisierung fehlgeschlagen

Hier ist der Fehler in den Protokollen von Entwicklungsserver:

04-06 14:31:34 ERROR [main] org.springframework.web.context.ContextLoader: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is javax.naming.LinkException: 

Und es gibt ein ähnliches etwa 10 Minuten später, als ich auf dem QA-Server eingesetzt habe.

Es bezieht sich auf eine in WebLogic definierte Datenquelle und Verbindungspool. Ich habe die Verbindung überprüft und getestet und es scheint keine Probleme damit zu geben.

Was könnte möglicherweise passieren, dass dies verursacht hätte? Ich kehrte sogar aus dem vergangenen Woche zu einem Build zurück, um sicherzustellen, es war keine Codeänderung, aber die gleiche Datenquelle erforderlich Ausnahme auftritt:

04-07 16:15:04 DEBUG [ExecuteThread: '14' for queue: 'default'] org.eei.survey.data.RegionDataDAO$NERCRegionMappingQuery: RdbmsOperation with SQL [{call prc_NERCRegions_get}] compiled 
04-07 16:15:04 ERROR [ExecuteThread: '14' for queue: 'default'] error.jsp: Error page displayed to user due to unhandled exception 
org.springframework.dao.InvalidDataAccessApiUsageException: dataSource is required 
    at org.springframework.jdbc.object.RdbmsOperation.compile(RdbmsOperation.java:300) 
    at org.eei.survey.data.ReportDAO$NCRMappingQuery.<init>(ReportDAO.java:535) 
    at org.eei.survey.data.ReportDAO.executePrcNCR(ReportDAO.java:548) 
    at org.eei.survey.data.ReportDAO.getNCR(ReportDAO.java:59) 
    at jsp_servlet._reliability._charts.__barncr._jspService(__barncr.java:235) 

Jede Hilfe würde geschätzt.

UPDATE: Hier ist die vollständige Stacktrace des Fehlers:

04-08 14:56:19 WARN [ExecuteThread: '14' for queue: 'default'] org.apache.shale.faces.ShaleViewHandler: No ViewController for viewId /reliability/support/reportgen.faces found under name reliability$support$reportgen 
04-08 14:56:19 DEBUG [ExecuteThread: '14' for queue: 'default'] org.eei.survey.data.ReportDAO: java.lang.IllegalArgumentException: No DataSource specified 
04-08 14:56:19 ERROR [ExecuteThread: '14' for queue: 'default'] error.jsp: Error page displayed to user due to unhandled exception 
java.lang.NullPointerException 
    at jsp_servlet._reliability._support.__reportgen._jspService(__reportgen.java:156) 
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) 
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315) 
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322) 
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322) 
    at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130) 
    at org.apache.shale.faces.ShaleViewHandler.renderView(ShaleViewHandler.java:142) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87) 
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) 
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006) 
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 
    at org.apache.shale.faces.InvokeCommand.execute(InvokeCommand.java:40) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:166) 
    at org.apache.shale.faces.ShaleApplicationFilter.doFilter(ShaleApplicationFilter.java:218) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 
    at org.eei.survey.web.UserFilter.doFilterInternal(UserFilter.java:30) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764) 
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644) 
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219) 
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178) 
+0

Können Sie mehr vom StackTrace erhalten? – chrislovecnm

+0

Vollständiger Stacktrace wurde hinzugefügt. – jwBurnside

+0

Sie definieren Ihre Datenquelle Bean? – chrislovecnm

Antwort

0

ich noch nicht über eine solide antworte darauf, warum das passiert ist, aber ich habe herausgefunden, wie ich es jetzt beheben kann. Ich musste im Grunde meine bereitgestellte Anwendung stoppen, dann den Verbindungspool zurücksetzen und dann neu starten. Ich hätte angenommen, dass das Neustarten des gesamten Servers die gleiche Sache erreicht hätte, aber ich habe das mehrmals ohne Ergebnisse versucht. Ich habe keine Stunden, um die Ursache des Problems zu finden, aber wenn jemand in diese Situation gerät, haben Sie zumindest eine schnelle Lösung.

1

Du ein Problem mit der JDNI Auflösung Ihrer Datenquelle haben. Werfen Sie einen Blick auf den Weblogic jdni Pool und machen Sie sich daran, dass Sie den richtigen Namen für jdni verwenden. Java: comp/env/jdbc/ZuverlässigkeitDS funktioniert nicht.

Dies kann helfen:

http://books.google.com/books?id=TiAKHpPHpHIC&pg=PA159&lpg=PA159&dq=weblogic+8.1+jndi+tree&source=bl&ots=cjKNXJZl4o&sig=FHs0YL6hqslNOYjuWpjyRTlCpYY&hl=en&sa=X&ei=veWBT5aVNoTMtgeJ8fC9Bg&ved=0CC0Q6AEwAQ#v=onepage&q=weblogic%208.1%20jndi%20tree&f=false

Dies auch

http://docs.oracle.com/cd/E13222_01/wls/docs81/jndi/jndi.html

Dies auch

Tomcat vs Weblogic JNDI Lookup

+0

Ja, alles scheint zu stimmen. Das war das erste, was ich vor ein paar Tagen überprüft habe, als sich das ereignete. Kennen Sie andere Protokolle oder Debug-Methoden, die ich ausprobieren könnte? Vielen Dank. – jwBurnside

+0

Schreiben Sie einen Unit-Test und verbinden Sie sich mit der Weblogic-Instanz außerhalb des Conatainers. Aktivieren Sie die Debugprotokollierung in den jdni-Federkomponenten – chrislovecnm