2013-06-03 2 views
0

나는 개찰구-1.5.x 이하, 스프링 3.2최대 절전 모드 - 3.6을 사용하고 있습니다. 내 응용 프로그램이 성공적으로 시작하고 데이터베이스에서 읽습니다. 그러나 실제로 페이지를로드하려고하면 예외가 아래에 붙여집니다.NullPointerException가()

왜 세션을 찾을 수 없습니까? 어디서부터 시작해야할지 모르겠다. 심지어 OpenSessionInViewFilter가 도움이 될지 여부를 알기 위해 페이지 렌더링 프로세스에서 충분히 이해하지 못했다. 내 테스트 클래스를 묶는 주석을 사용하고

@ContextConfiguration(locations = { "classpath:testApplicationContext.xml" }) 
@TransactionConfiguration(transactionManager = "txManager") 
@RunWith(SpringJUnit4ClassRunner.class) 
public abstract class AbstractWebPageTests implements ApplicationContextAware 

:

내 테스트 클래스

org.apache.wicket.WicketRuntimeException: Exception in rendering component: [TooltipContainer [Component id = firstNameTip]] 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2590) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.form.Form.onComponentTagBody(Form.java:1656) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.Page.onRender(Page.java:907) 
    at org.apache.wicket.markup.html.WebPage.onRender(WebPage.java:140) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.Page.renderPage(Page.java:1035) 
    at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:118) 
    at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:246) 
    at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167) 
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:784) 
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) 
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212) 
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283) 
    at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:696) 
    at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:624) 
    at org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:596) 
    at org.apache.wicket.util.tester.BaseWicketTester.startPage(BaseWicketTester.java:1257) 
    at org.apache.wicket.util.tester.BaseWicketTester.startPage(BaseWicketTester.java:1230) 
    at us.ak.state.revenue.cssd.Personnel.Pages.MaintenanceForms.Employee.TestChangeRequestMaintenance.__CLR3_1_11lo23k3ciu(TestChangeRequestMaintenance.java:52) 
    at us.ak.state.revenue.cssd.Personnel.Pages.MaintenanceForms.Employee.TestChangeRequestMaintenance.testLoadPageLoggedIn_DO(TestChangeRequestMaintenance.java:49) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) 
    at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:77) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: java.lang.RuntimeException: An error occurred while getting the model object for Component: [TextField [Component id = firstName, page = us.ak.state.revenue.cssd.Personnel.Pages.MaintenanceForms.Employee.ChangeRequestMaint, path = 0:emp_info_maint:firstNameTip:firstName.TextField, isVisible = true, isVersioned = false, markup = [markup = file:/C:/Users/tfburton/Documents/JavaProjects/SVN/Personnel/trunk/target/classes/us/ak/state/revenue/cssd/Personnel/Pages/MaintenanceForms/Employee/ChangeRequestMaint.html 
<input wicket:id="firstName" type="text" class="noChange"/>, index = 0, current = '<input wicket:id="firstName" type="text" class="noChange"/>' (line 0, column 0)]]] 
    at org.apache.wicket.Component.getDefaultModelObject(Component.java:1679) 
    at org.apache.wicket.Component.getDefaultModelObjectAsString(Component.java:1701) 
    at org.apache.wicket.markup.html.form.FormComponent.getModelValue(FormComponent.java:1211) 
    at org.apache.wicket.markup.html.form.FormComponent.getValue(FormComponent.java:837) 
    at org.apache.wicket.markup.html.form.TextField.onComponentTag(TextField.java:108) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2534) 
    at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1530) 
    at org.apache.wicket.Component.internalRender(Component.java:2393) 
    at org.apache.wicket.Component.render(Component.java:2321) 
    at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1428) 
    at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1592) 
    at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1567) 
    at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1521) 
    at org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:72) 
    at org.apache.wicket.Component.internalRenderComponent(Component.java:2563) 
    ... 104 more 
Caused by: org.apache.wicket.WicketRuntimeException: Error calling method: public java.lang.String us.ak.state.revenue.cssd.Personnel.dao.Employee.Employee.getFirstName() on object: null 
    at org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.getValue(PropertyResolver.java:1127) 
    at org.apache.wicket.util.lang.PropertyResolver$ObjectAndGetSetter.getValue(PropertyResolver.java:648) 
    at org.apache.wicket.util.lang.PropertyResolver.getValue(PropertyResolver.java:102) 
    at org.apache.wicket.model.AbstractPropertyModel.getObject(AbstractPropertyModel.java:134) 
    at org.apache.wicket.Component.getDefaultModelObject(Component.java:1674) 
    ... 118 more 
Caused by: java.lang.NullPointerException 
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:143) 
    at us.ak.state.revenue.cssd.Personnel.dao.NameTableHome.findByPcn(NameTableHome.java:555) 
    at WICKET_us.ak.state.revenue.cssd.Personnel.dao.NameTableHome$$FastClassByCGLIB$$bd58bb2e.invoke(<generated>) 
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
    at org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:333) 
    at WICKET_us.ak.state.revenue.cssd.Personnel.dao.NameTableHome$$EnhancerByCGLIB$$e12a569d.findByPcn(<generated>) 
    at us.ak.state.revenue.cssd.Personnel.dao.PcnTable.getNameTable(PcnTable.java:198) 
    at us.ak.state.revenue.cssd.Personnel.dao.Employee.Employee.getNameTable(Employee.java:697) 
    at us.ak.state.revenue.cssd.Personnel.dao.Employee.Employee.getFirstName(Employee.java:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.getValue(PropertyResolver 

업데이트는 다음 클래스를 확장합니다. 그러나 XML 테스트를 시작할 때 new WicketTester(new MockLoggedInApplication(user));을 통해로드 된 실제 웹 응용 프로그램을 최대한 많이 유선으로 만들기 위해 가능한 한 XML을 사용하려고합니다. MockLoggedInApplication extends QuickstartApplication 그리고 내 응용 프로그램은 많은 데이터베이스에서 QuickStartApplication.init()을 읽습니다.

applicationContext.xml을 붙여야하나요?

참고 :

은 내가 문제를 좁혀 것 같아요.

당신이 바닥 Caused By:

Caused by: java.lang.NullPointerException 
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSession(HibernateDaoSupport.java:143) 
    at us.ak.state.revenue.cssd.Personnel.dao.NameTableHome.findByPcn(NameTableHome.java:555) 
    at WICKET_us.ak.state.revenue.cssd.Personnel.dao.NameTableHome$$FastClassByCGLIB$$bd58bb2e.invoke(<generated>) 
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 
    at org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:333) 
    at WICKET_us.ak.state.revenue.cssd.Personnel.dao.NameTableHome$$EnhancerByCGLIB$$e12a569d.findByPcn(<generated>) 
    at us.ak.state.revenue.cssd.Personnel.dao.PcnTable.getNameTable(PcnTable.java:198) 
    at us.ak.state.revenue.cssd.Personnel.dao.Employee.Employee.getNameTable(Employee.java:697) 
    at us.ak.state.revenue.cssd.Personnel.dao.Employee.Employee.getFirstName(Employee.java:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.getValue(PropertyResolver 

자세히 보면 내 DAO는 내 개찰구 프록시 WICKET_us.ak.state.revenue.cssd.Personnel.dao.NameTableHome$$FastClassByCGLIB$$bd58bb2e.invoke(<generated>)으로을 처리됩니다. 그러나 개찰구가 저에게 그것을 위조하기는하지만 스프링 거래 관리 (Spring Transaction Management)에 의해 절대로 잡히지 않는 것처럼 보입니다.

내 트랜잭션 관리 설정 :

<bean id="sessionFactory" 
     class="us.ak.state.revenue.cssd.Personnel.utils.SessionFactoryBean" > 
    <property name="configLocation" value="classpath:hibernate.cfg.xml"> 
    </property> 
</bean> 

<bean id="txManager" 
    class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory"> 
    <ref bean="sessionFactory" /> 
    </property> 
</bean> 

<tx:advice id="txAdvice" transaction-manager="txManager"> 
    <tx:attributes> 
     <tx:method name="find*"  propagation="REQUIRED"/> 
     <!-- others omitted for brevity --> 
    </tx:attributes> 
</tx:advice> 

<aop:config proxy-target-class="true" > 
    <aop:advisor advice-ref="txAdvice" 
      pointcut="execution(* *..BaseHibernateDAO+.find*(..))" /> 
    <!-- omitted for brevity --> 
</aop:config> 

<bean id="NameTableHome" 
     class="us.ak.state.revenue.cssd.Personnel.dao.NameTableHome" > 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 
<!-- other dao beans omitted for brevity --> 

NameTableHome이 비슷한 선언 : HibernateDaoSupport를에 코드를 바탕

public class NameTableHome extends BaseHibernateDAO 
+1

요즘은 'HibernateDaoSupport'의 사용을 권장하지 않습니다. http://stackoverflow.com/a/5104965/870248 –

+0

이 코드는 원래 ** Spring 2.5.x **에서 사용되었습니다 ** ** 3.2 버전으로 업그레이드했습니다 ** 기본 클래스를 변환 할 것입니다. 일단 응용 프로그램이 다시 작동하게되면 – Raystorm

+0

세션을 가져올 때 NPE가 발생하는 것처럼 보입니다. SessionFactory가 생성 또는 설정되지 않는지 확인하기 위해 구성을 살펴 보겠습니다. 여러분이 Annotation을 사용하여 연결하지 않고 SessionFactory를 HibernateDAOSupport에 연결하는 것이 어떤 이유로 든 required = false로 설정되어 있지 않다면 나는 실패 할 것이라고 예상합니다. – CodeChimp

답변

0

: 143 (적어도 내 버전, 봄 ORM 3.2. 2) HibernateDaoSupport의 hibernateTemplate 필드가 null이라고 생각됩니다. 템플릿이 올바르게 설정되어 있습니까?

관련 문제