2017-09-20 11 views
0

私は郵便配達員からデータをフェッチしてDBに格納するために次のコードを試しています。しかしnullPointerExceptionが発生します。 @Autowired Spring + Hibernate + AnnotationのSessionFactoryでのヌルポインタ例外

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans  
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd"> 

    <mvc:annotation-driven /> <mvc:default-servlet-handler />  

</beans> 

この

は私のDAOのImplコード

@Repository 
public class AddBeneficiaryDaoImpl implements AddBeneficiaryDao { 
    private SessionFactory sessionFactory; 

    @Autowired 
    public void setSessionFactory(SessionFactory sessionFactory) { 
     this.sessionFactory = sessionFactory; 

    } 

    @Override 
    public void insertBeneRegistration(AddBeneficiaryModel beneDetails) { 
     System.out.println("Inside insertBeneRegistration"); 
     System.out.println("Session Factory " + sessionFactory); 
     Session session = sessionFactory.openSession(); 
     System.out.println("session : " + session); 
     try { 
      Transaction tx = session.beginTransaction(); 
      session.save(beneDetails); 
      tx.commit(); 
     } finally { 
      session.close(); 
     } 

    } 
} 

で次のように

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
        classpath:applicationContext.xml 
     </param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <servlet-class> 
      com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.cherry.copayimps</param-value> 
     </init-param> 
     <init-param> 
      <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
      <param-value>true</param-value> 
     </init-param>  
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

<!-- <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 


    --> 


</web-app> 

春-servlet.xmlは次のように

web.xmlがありますエラーは以下の通りですs

> Sep 20, 2017 11:38:55 AM 
> com.sun.jersey.api.core.PackagesResourceConfig init INFO: Scanning for 
> root resource and provider classes in the packages: 
> com.cherry.copayimps Sep 20, 2017 11:38:55 AM 
> com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Root 
> resource classes found: class 
> com.cherry.copayimps.controller.AddBeneficiaryRestAPI Sep 20, 2017 
> 11:38:55 AM com.sun.jersey.api.core.ScanningResourceConfig init INFO: 
> No provider classes found. Sep 20, 2017 11:38:55 AM 
> com.sun.jersey.spi.spring.container.servlet.SpringServlet getContext 
> INFO: Using default applicationContext Sep 20, 2017 11:38:55 AM 
> com.sun.jersey.spi.spring.container.SpringComponentProviderFactory 
> registerSpringBeans INFO: Registering Spring bean, 
> addBeneficiaryRestAPI, of type 
> com.cherry.copayimps.controller.AddBeneficiaryRestAPI as a root 
> resource class Sep 20, 2017 11:38:55 AM 
> com.sun.jersey.server.impl.application.WebApplicationImpl _initiate 
> INFO: Initiating Jersey application, version 'Jersey: 1.9.1 09/14/2011 
> 02:05 PM' Got the data Inside insertBeneRegistration Session Factory 
> null Sep 20, 2017 11:38:57 AM 
> com.sun.jersey.spi.container.ContainerResponse 
> mapMappableContainerException SEVERE: The RuntimeException could not 
> be mapped to a response, re-throwing to the HTTP container 
> java.lang.NullPointerException at 
> com.cherry.copayimps.dao.AddBeneficiaryDaoImpl.insertBeneRegistration(AddBeneficiaryDaoImpl.java:28) 
> at 
> com.cherry.copayimps.process.AddBeneficiaryProcess.addBeneProcess(AddBeneficiaryProcess.java:38) 
> at 
> com.cherry.copayimps.controller.AddBeneficiaryRestAPI.addBeneficiary(AddBeneficiaryRestAPI.java:27) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:498)  at 
> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
> at 
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
> at 
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
> at 
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 
> at 
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
> at 
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
> at 
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
> at 
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 
> at 
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
> at 
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
> at 
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)  at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
> at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
> at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) 
> at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
> at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) 
> at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
> at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
> at 
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
> at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
> at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
> at 
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498) 
> at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
> at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) 
> at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1366) 
> at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
> at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
> at java.lang.Thread.run(Thread.java:748) 
> 
> Sep 20, 2017 11:38:57 AM org.apache.catalina.core.StandardWrapperValve 
> invoke SEVERE: Servlet.service() for servlet [jersey-serlvet] in 
> context with path [/copayimps] threw exception 
> java.lang.NullPointerException at 
> com.cherry.copayimps.dao.AddBeneficiaryDaoImpl.insertBeneRegistration(AddBeneficiaryDaoImpl.java:28) 
> at 
> com.cherry.copayimps.process.AddBeneficiaryProcess.addBeneProcess(AddBeneficiaryProcess.java:38) 
> at 
> com.cherry.copayimps.controller.AddBeneficiaryRestAPI.addBeneficiary(AddBeneficiaryRestAPI.java:27) 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
> at java.lang.reflect.Method.invoke(Method.java:498)  at 
> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
> at 
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
> at 
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
> at 
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) 
> at 
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
> at 
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
> at 
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
> at 
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) 
> at 
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) 
> at 
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
> at 
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) 
> at 
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) 
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)  at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
> at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 
> at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) 
> at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 
> at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) 
> at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 
> at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
> at 
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) 
> at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) 
> at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
> at 
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498) 
> at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
> at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) 
> at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1366) 
> at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
> at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
> at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
> at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
> at java.lang.Thread.run(Thread.java:748) 

してください。何か他のものが必要な場合は、お問い合わせください、私は事前

+1

これを追加更新しますあなたの 'sessionFactory'はnullです。 'sessionFactory' beanはどこで設定しますか?以下のような 'xml'設定ファイルの中にあったはずです:' ' – pleft

+0

spring-servlet.xmlに追加しますか? ? –

+0

多くの設定が必要です。ここで例を確認してください:http://www.baeldung.com/hibernate3-spring – pleft

答えて

0

おかげで、あなたのapplicationContext.xmlをして

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 

    <property name="url" value="jdbc:postgresql://127.0.0.1/dbname" /> 
    <property name="username" value="postgres" /> 
    <property name="password" value="postgres" /> 
    <property name="url" value="jdbc:postgresql://localhost:5432/sangamam" /> 
    <property name="username" value="sangamam" /> 
    <property name="password" value="sangamam" /> 

    <property name="defaultAutoCommit" value="false" /> 
    <property name="testOnBorrow" value="true" /> 
    <property name="validationQuery" value="select 1" /> 
    <property name="maxWait" value="3600000" /> 
    <property name="timeBetweenEvictionRunsMillis" value="1800000" /> 
</bean> 

<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.mmf.model" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.show_sql">false</prop> 
      <prop key="hibernate.sql_comments">false</prop> 
      <prop key="hibernate.format_sql">false</prop> 
      <prop key="hibernate.generate_statistics">false</prop> 
      <prop key="hibernate.jdbc.use_streams_for_binary">false</prop> 
      <!--<prop key="hibernate.hbm2ddl.auto">validate</prop> --> 

      <!--prop key="hibernate.cache.use_second_level_cache">true</prop> <prop 
       key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop --> 

      <prop key="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider 
      </prop> 
      <prop key="hibernate.c3p0.min_size">5</prop> 
      <prop key="hibernate.c3p0.max_size">100</prop> 
      <prop key="hibernate.c3p0.max_statements">25</prop> 
      <prop key="hibernate.c3p0.timeout">1800</prop> 
      <prop key="hibernate.c3p0.acquire_increment">5</prop> 
      <prop key="hibernate.c3p0.idle_test_period">1800</prop> 
     </props> 
    </property> 
    <property name="entityInterceptor"> 
     <bean class="com.mmf.repository.listener.UserAndDateInterceptor" /> 
    </property> 
</bean> 

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

<tx:annotation-driven transaction-manager="transactionManager" 
    proxy-target-class="true" /> 
関連する問題