3

I'm trying to track down the reason why a portion of my application stopped working all of a sudden. I'm running Spring 1 with Weblogic 8.1.4.0 and Hibernate. The report generator is the part that has failed, first on our production server, then on the dev and qa servers on Friday while I was experimenting. I made no changes to the code, but I'm now getting a Missing Data Source exception on the compile statement of a mapping query. The only thing that changed was a couple of records in the database, but they were fairly simple changes that I doubt would have had an impact. I also got the following error from Friday around the time that the two development apps may have failed:

Here is the error in the logs from development server:

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: 

And there is a similar one about 10 minutes later from when I deployed to the QA server.

It is referring to a datasource and connection pool defined in WebLogic. I have checked and tested the connection, and there doesn't seem to be any problems with it.

What could possibly be going on that would have caused this? I even reverted back to a build from last week to make sure it was not a code change, but the same datasource required exception occurs:

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)

Any help would be appreciated.

UPDATE: Here is the full stacktrace of the error:

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)
5
  • Can you get more of the stacktrace? Commented Apr 8, 2012 at 18:46
  • Full stacktrace has been added. Commented Apr 8, 2012 at 18:59
  • You you define your datasource bean? Commented Apr 8, 2012 at 19:15
  • Yes: <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"><value>java:comp/env/jdbc/reliabilityDS</value></property> </bean> Commented Apr 8, 2012 at 19:21
  • @jwbunside See my answer below. Should help. Good luck! Commented Apr 8, 2012 at 19:26

2 Answers 2

1

You are having a problem with the jdni resolution of your datasource. Take a look at the weblogic jdni pool and make usre that you are using the correct name for jdni. java:comp/env/jdbc/reliabilityDS is not working.

This may help:

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

This also

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

This as well

Tomcat vs Weblogic JNDI Lookup

Sign up to request clarification or add additional context in comments.

2 Comments

Yeah, everything seems to be matching up. That was actually the first thing I checked a couple of days ago when this occurred. Know any other logs or debug methods I might try? Thanks.
write a unit test and connect to the weblogic instance outside of the conatainer. Turn on debug logging in the jdni spring components
1

I still don't have a solid answer for why this occurred, but I did figure out how to fix it for now. I basically had to stop my deployed application, then reset the connection pool, then restart again. I would have assumed that restarting the entire server would have accomplished the same thing, but I tried that several times with no results. I don't have hours to track down the source of the problem currently, but if anyone gets into this situation you at least have a quick fix.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.