【问题标题】:my first Spring MVC with Mongo; mongosocketexception我第一个使用 Mongo 的 Spring MVC; mongosocket异常
【发布时间】:2015-07-23 18:59:10
【问题描述】:

您好,我正在使用带有 Spring MVC 的 MongoDB。 我面临以下问题- “HTTP 状态 500 - 处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError: com/mongodb/MongoSocketException”。

以下是我的项目详情。

POM.xml:

<dependencies>
    <!-- Spring framework START -->
    <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.2.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.8.2.RELEASE</version>
    </dependency>

    <!-- mongo db driver -->
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>2.11.0</version>
        <!-- <version>3.0.2</version> -->
    </dependency>

    <!-- Jstl for jsp page -->
    <!-- http://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- Servlet API -->
    <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <!-- <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.4</version>
    </dependency> -->


    <!-- JSP API -->
    <!-- http://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
    <!-- <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency> -->

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>4.0.6.RELEASE</version>
    </dependency>


    <!-- spring mongo driver -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.5.2.RELEASE</version>
        <!-- <version>1.5.2.RELEASE</version> -->
    </dependency>

    <!-- Spring framework END -->

    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.0</version>
    </dependency>
    <dependency>
        <artifactId>commons-logging</artifactId>
        <groupId>commons-logging</groupId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>

    <dependency>
        <groupId>asm</groupId>
        <artifactId>asm</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.5.3</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>13.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.xbean</groupId>
        <artifactId>xbean-spring</artifactId>
        <version>3.2</version>
    </dependency>

WEB.XML 是:

<display-name>SpringMVCMongo</display-name>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>

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

<servlet>
    <servlet-name>SpringMVCMongo</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>  
</servlet>

<servlet-mapping>
    <servlet-name>SpringMVCMongo</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


Dispatcher-servlet.xml is:


    <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
    <property name="host" value="54.172.243.152" />
    <property name="port" value="27005" />
</bean>
<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials">
    <constructor-arg name="username" value="smynapati" />
    <constructor-arg name="password" value="smynapati" />
    <!-- <constructor-arg name="authSource" value="admin" /> -->
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongo" ref="mongo" />
    <!-- <constructor-arg name="mongoCredentials" ref="mongoCredentials" /> -->
    <constructor-arg name="databaseName" value="test1" />
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<context:component-scan base-package="com.userlogin"/>
<bean id="ViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

【问题讨论】:

    标签: spring mongodb maven spring-data-mongodb


    【解决方案1】:

    您应该将mongo-java-driver 版本至少升级到2.12.0。这是第一个引入MongoSocketException 的版本(对前一个的未检查异常替换)。

    spring-data-mongodb 版本1.5.2.RELEASE 是用mongo-java-driver 版本2.12.1 编译的,它比你在pom 中声明的版本(2.11.0)“旧”。

    您应该将其设置为mongo-java-driver 的固定依赖版本。含义将mongo-java-driver2.11.0更改为2.12.1

    【讨论】:

    • 您好,谢谢,它已解决,但我需要更多建议。我不得不提到“authSource”参数。我的参数值是“authSource=admin”,我应该用用户名和密码给出这个值,然后只有我可以连接到它。如果您在上面看到我的 dispatcher-servlet.xml 文件,我确实评论了 authSource,因为我正面临 bean 创建异常。
    • 仅供参考,在独立组件中,我用来提供 mongo 凭据,如下所示 MongoClient client = new MongoClient(new MongoClientURI("mongodb://smynapati:smynapati@12.123.123.123:27005/?authSource=admin "));
    • 这是一个与原来完全不同的问题。您应该将其作为新问题发布。提示:你应该注册一个MongoDbFactory Spring bean
    • 正如你所建议的,我又提出了一个关于“authsource in mongodb spring”的问题。你能在那里添加你的建议吗?
    【解决方案2】:

    A 发现你的web.xml和Dispatcher-servlet.xml,

    在 Spring servlet name 必须与 dispatcher name 相同, 即你应该将 Dispatcher-servlet.xml 重命名为 SpringMVCMongo-servlet.xml。

    然后试试代码。

    一切顺利。

    【讨论】:

    • ArjunKori,我改变了它,你能不能看看这篇文章“authsource in mongodb spring”。
    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 2016-03-03
    • 1970-01-01
    • 2012-10-23
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多