2014-08-28 29 views
0

在我的项目中,我必须一起使用MySQL和mongoDB。因此,我为MySQL创建了一个sessionFactory。Maven:一起使用MySQL和MongoDB

该项目工作正常,如果它只是使用MySQL。我想补充的jar包MongoDB的那一刻,我在该行收到一个NullPointerException异常:

Session session = sessionFactory.OpenSession(); 

,我收到的错误如下:

ERROR 2014-08-28 10:28:15,366 [http-bio-8081-exec-4][] com.bng.dbscan.dao.DbscanDao - 
    java.lang.NullPointerException 
    at com.bng.dbscan.dao.DbscanDao.getData(DbscanDao.java:53) 
    at com.bng.dbscan.dao.DbscanDao.dbscan(DbscanDao.java:104) 
    at com.bng.dbscan.controller.DbscanController.dbscan(DbscanController.java:50) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

有什么办法,我可以使用MySQL和mongoDB一起使用SessionFactory?请帮助我。谢谢。

编辑1 ... SessionFactory的豆

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" destroy-method="destroy"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="annotatedClasses"> 
      <list> 
       <value>com.bng.dbscan.entity.Data</value>   
      </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${DbConnection.hibernate.dialect}</prop> 
       <prop key="hibernate.hbm2ddl.auto">${DbConnection.hibernate.hbm2ddl.auto}</prop> 
       <prop key="hibernate.show_sql">${DbConnection.hibernate.show_sql}</prop> 
       <prop key="hibernate.cache.region.factory_class">${DbConnection.hibernate.cache.region.factory_class}</prop> 
       <prop key="hibernate.cache.use_second_level_cache">${DbConnection.hibernate.cache.use_second_level_cache}</prop> 
       <prop key="hibernate.cache.use_query_cache">${DbConnection.hibernate.cache.use_query_cache}</prop> 
      </props> 
     </property> 
    </bean> 

连接豆...

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close"> 
     <property name="driverClass" value="${DbConnection.JdbcDrivers}" /> 
     <property name="jdbcUrl" value="${DbConnection.DSNurl}" /> 
     <property name="username" value="${DbConnection.User}" /> 
     <property name="password" value="${DbConnection.Password}" /> 
     <property name="idleConnectionTestPeriodInSeconds" value="10" /> 
     <property name="connectionTestStatement" value="Select 1" /> 
     <property name="idleMaxAgeInMinutes" value="240" /> 
     <property name="maxConnectionsPerPartition" value="${DbConnection.maxConnectionsPerPartition}" /> 
     <property name="minConnectionsPerPartition" value="${DbConnection.minConnectionsPerPartition}" /> 
     <property name="partitionCount" value="${DbConnection.partitionCount}" /> 
     <property name="acquireIncrement" value="5" /> 
     <property name="statementsCacheSize" value="100" /> 
     <property name="acquireRetryDelayInMs" value="10" /> 
     <property name="deregisterDriverOnClose" value="false" /> 
    </bean> 

EDIT 2 ...的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>xxxxx</groupId> 
    <artifactId>xxx</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <namexxx</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <spring.version>3.2.4.RELEASE</spring.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.4</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.1.2</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>taglibs</groupId> 
      <artifactId>standard</artifactId> 
      <version>1.1.2</version> 
      <type>jar</type> 
      <scope>provided</scope> 
     </dependency> 

     <!-- Spring 3 --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jms</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${spring.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- Quartz --> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- Log4J --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
      <scope>provided</scope> 
      <type>jar</type> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.5.6</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>apache-log4j-extras</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- Database --> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.9</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.mchange</groupId> 
      <artifactId>c3p0</artifactId> 
      <version>0.9.2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.2.6.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.2.6.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.0.1.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>4.2.6.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-c3p0</artifactId> 
      <version>4.2.6.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>4.0.4.Final</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.jolbox</groupId> 
      <artifactId>bonecp</artifactId> 
      <version>0.8.0.RELEASE</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- Compressing --> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-compress</artifactId> 
      <version>1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- FTP file transfer --> 
     <dependency> 
      <groupId>commons-net</groupId> 
      <artifactId>commons-net</artifactId> 
      <version>3.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- SFTP file transfer --> 
     <dependency> 
      <groupId>com.jcraft</groupId> 
      <artifactId>jsch</artifactId> 
      <version>0.1.51</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- JSON --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.3.2</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongo-java-driver</artifactId> 
      <version>2.10.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-mongodb</artifactId> 
      <version>1.3.1.RELEASE</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>xxx</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <encoding>UTF8</encoding> 
       </configuration> 
       <inherited>true</inherited> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

如果您使用Maven,为什么要添加jar包?你使用什么样的SessionFactory?休眠?弹簧?你自己? – Mardoz 2014-08-28 11:38:08

+0

实际上,我在pom.xml中添加了mongoDB的工件。我正在使用Hibernate SessionFactory。 – StackAddict 2014-08-28 11:57:34

+0

你如何定义你的数据库连接? – Mardoz 2014-08-28 12:36:03

回答

0

它可能有绝对没有与你使用mongo和mysql一起的事实。你能告诉我们的相关代码:

DbscanDao.getData(),更具体地说,第53行

它是在异常发生时,100%的人无关,与蒙戈或休眠状态被一起使用。

+0

第53行是.. Session session = sessionFactory.OpenSession(); (我在上面提到过)。我尝试了两个实例。我从pom.xml中删除了mongoDB构件并运行了该项目......它没有发生任何错误。之后,我添加了工件并跑了起来。它显示了同样的错误。我知道它很奇怪,但一些mongoDb工件如何影响sessionfactory会话。 – StackAddict 2014-08-28 12:55:32