java - Spring DI Web-App @Autowired Class is null -
this question has answer here:
- why spring @autowired field null? 10 answers
i'm trying autowire repository (backend package) web package, nullpointerexception
.
i have 2 packages:
- backend (applicationcontext.xml, repository, model)
- web
my src/main/webapp/web-inf/web.xml:
<!--load spring config --> <context-param> <param-name>contextconfiglocation</param-name> <param-value> classpath*:meta-inf/spring/applicationcontext-db.xml <!--classpath*:meta-inf/spring/applicationcontext.xml--> </param-value> </context-param> <!-- bootstrap listener start , shut down spring's root webapplicationcontext. registered servlet container --> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.requestcontextlistener</listener-class> </listener> <context-param> <param-name>javax.faces.facelets_skip_comments</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.interpret_empty_string_submitted_values_as_null</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.project_stage</param-name> <!-- <param-value>production</param-value> --> <param-value>development</param-value> </context-param> <context-param> <param-name>javax.faces.partial_state_saving</param-name> <param-value>false</param-value> </context-param> <!-- jsf servlet defined container --> <servlet> <servlet-name>faces servlet</servlet-name> <servlet-class>javax.faces.webapp.facesservlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- mapping servlet , url http requests. --> <servlet-mapping> <servlet-name>faces servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>
applicationcontext.xml
<!-- scan annotations , register them --> <context:component-scan base-package="de.haegerconsulting.telculator.*"/> <!-- transaction manager --> <bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="entitymanagerfactory"/> <property name="datasource" ref="datasource"/> </bean> <!-- detect @transactional --> <tx:annotation-driven transaction-manager="transactionmanager"/> <!-- entity manager factory --> <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="datasource"/> <property name="jpavendoradapter"> <!-- define hibernate jpa vendor adapter --> <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"> <property name="generateddl" value="true"/> <property name="database" value="h2"/> </bean> </property> <property name="persistencexmllocation" value="classpath:meta-inf/persistence.xml"/> <property name="persistenceunitname" value="secondary"/> </bean> <!-- datasource --> <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="org.h2.driver"/> <property name="url" value="jdbc:h2:mem://localhost/~/telculator;db_close_delay=-1"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <bean class="org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor"/>
java class should autowire repository
@autowired private companyrepository companyrepository;
the view (upload .csv file)
@managedbean public class fileuploadcontroller { private uploadedfile file; private string destination = system.getproperty("java.io.tmpdir"); public void upload() throws ioexception { inputstream inputstream = null; outputstream outputstream = null; try { inputstream = file.getinputstream(); outputstream = new fileoutputstream(destination + file.getfilename()); int read = 0; final byte[] bytes = new byte[1024]; while ((read = inputstream.read(bytes)) != -1) { outputstream.write(bytes, 0, read); } try { importcsvserviceimpl importcsvservice = new importcsvserviceimpl(destination + file.getfilename()); // write sets , store them in database importcsvservice.readcsvfile(); **importcsvservice.storeentities(); --> nullpointerexception!** } catch (exception e) { e.printstacktrace(); } // file upload successful facesmessage message = new facesmessage("successful", file.getfilename() + " uploaded."); facescontext.getcurrentinstance().addmessage(null, message); } catch (ioexception e) { e.printstacktrace(); } { if (outputstream != null) { outputstream.close(); } if (inputstream != null) { inputstream.close(); } } }
the unit-tests work great.
i repository injected , tests fine.
could please me?
missing something?
update
stacktrace
information: server startup in 5240 ms java.lang.nullpointerexception @
de.haegerconsulting.telculator.backend.service.impl.importcsvserviceimpl.storeentities(importcsvserviceimpl.java:178) @ de.haegerconsulting.telculator.web.controller.fileuploadcontroller.upload(fileuploadcontroller.java:41) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.el.parser.astvalue.invoke(astvalue.java:278) @ org.apache.el.methodexpressionimpl.invoke(methodexpressionimpl.java:274) @ javax.faces.event.methodexpressionactionlistener.processaction(methodexpressionactionlistener.java:149) @ javax.faces.event.actionevent.processlistener(actionevent.java:88) @ javax.faces.component.uicomponentbase.broadcast(uicomponentbase.java:813) @ javax.faces.component.uicommand.broadcast(uicommand.java:300) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.primefaces.webapp.filter.fileuploadfilter.dofilter(fileuploadfilter.java:78) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:51) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:100) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1041) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:603) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:312) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:745) java.lang.nullpointerexception @ de.haegerconsulting.telculator.backend.service.impl.importcsvserviceimpl.storeentities(importcsvserviceimpl.java:186) @ de.haegerconsulting.telculator.web.controller.fileuploadcontroller.upload(fileuploadcontroller.java:41) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.el.parser.astvalue.invoke(astvalue.java:278) @ org.apache.el.methodexpressionimpl.invoke(methodexpressionimpl.java:274) @ javax.faces.event.methodexpressionactionlistener.processaction(methodexpressionactionlistener.java:149) @ javax.faces.event.actionevent.processlistener(actionevent.java:88) @ javax.faces.component.uicomponentbase.broadcast(uicomponentbase.java:813) @ javax.faces.component.uicommand.broadcast(uicommand.java:300) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.primefaces.webapp.filter.fileuploadfilter.dofilter(fileuploadfilter.java:78) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:51) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:100) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1041) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:603) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:312) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:745) java.lang.nullpointerexception @ de.haegerconsulting.telculator.backend.service.impl.importcsvserviceimpl.storeentities(importcsvserviceimpl.java:194) @ de.haegerconsulting.telculator.web.controller.fileuploadcontroller.upload(fileuploadcontroller.java:41) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.el.parser.astvalue.invoke(astvalue.java:278) @ org.apache.el.methodexpressionimpl.invoke(methodexpressionimpl.java:274) @ javax.faces.event.methodexpressionactionlistener.processaction(methodexpressionactionlistener.java:149) @ javax.faces.event.actionevent.processlistener(actionevent.java:88) @ javax.faces.component.uicomponentbase.broadcast(uicomponentbase.java:813) @ javax.faces.component.uicommand.broadcast(uicommand.java:300) @ javax.faces.component.uiviewroot.broadcastevents(uiviewroot.java:790) @ javax.faces.component.uiviewroot.processapplication(uiviewroot.java:1282) @ com.sun.faces.lifecycle.invokeapplicationphase.execute(invokeapplicationphase.java:81) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.execute(lifecycleimpl.java:198) @ javax.faces.webapp.facesservlet.service(facesservlet.java:646) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:305) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.primefaces.webapp.filter.fileuploadfilter.dofilter(fileuploadfilter.java:78) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:51) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:243) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:210) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:222) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:123) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:502) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:171) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:100) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:118) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:953) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1041) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:603) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:312) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) @ java.lang.thread.run(thread.java:745)
importcsvserviceimpl importcsvservice = new importcsvserviceimpl(destination + file.getfilename());
you creating service here manually , not getting spring container, not spring managed. bean autowired using annotation within class not injected spring unless of course have explicitly initialized asking spring application context in constructor or initializing method anyway make use of auto-wiring annotation useless).
your fileuploadcontroller
jsf managed bean , if importcsvservice
intended spring managed need follow instructions here make work autowiring.
Comments
Post a Comment