Я получаю java.lang.StackOverflowError при запуске моего проекта?

Я пытаюсь реализовать поиск solr с помощью Spring и postgres, используя maven, но при запуске приложения я получаю 404 с исключением

Exception processing loader WebappLoader[/solrjExample] background process
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.StackOverflowError

Я действительно не понимаю, в чем проблема. Вот мой spring-servlet:

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

    <context:component-scan base-package="org.tcs.com.controller" />
    <context:property-placeholder location="classpath:org/tcs/com/lak/resources/application.properties" />
    <mvc:annotation-driven />
    <bean id="jacksonMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
    <bean
        class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html" />
                <entry key="json" value="application/json" />
            </map>
        </property>
        <property name="viewResolvers">
            <list>
                <bean
                    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>
            </list>
        </property>
        <property name="defaultViews">
            <list>
                <bean
                    class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                    <property name="prefixJson" value="true" />
                </bean>
            </list>
        </property>
    </bean>
    <!-- ##################################### SOLR ##################################### -->
    <!-- Configures HTTP Solr server -->
    <solr:solr-server id="solrServer" url="${solr.server.url}" />

    <!-- Configures Solr template -->
    <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate">
        <constructor-arg index="0" ref="solrServer" />
    </bean>
<!-- ##################################### postgres ##################################### -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="org.postgresql.Driver"
        p:url="jdbc:postgresql://localhost:5432/Prime" p:username="postgres"
        p:password="Password" /> 
        <!-- ##################################### Hibernate ##################################### -->
    <bean id="sessionfactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:Hibernate.cfg.xml</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.cache.use_second_level_cache">false</prop>
            </props>
        </property>
    </bean> 
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionfactory" />
    </bean>  
</beans>

И мой web.xml

<?xml version="1.0" encoding="UTF-8"?>

  <web-app id="WebApp_ID" version="2.4"
   xmlns="http://java.sun.com/xml/ns/j2ee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <display-name>solrjExample</display-name>
   <servlet>
      <servlet-name>solrjExample</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
        <init-param>
       <param-name>contextConfigLocation</param-name>
         <param-value>WEB-INF/slorjExample-servlet.xml</param-value>
       </init-param>
      <load-on-startup>1</load-on-startup>
   </servlet>

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

</web-app>

Я думаю, что что-то не так с конфигурацией или что-то еще, так как я новичок в solr. Спасибо за помощь.


person Lakshmi    schedule 06.03.2013    source источник
comment
проверьте свой код, может быть какой-то бесконечный цикл бесконечной рекурсии   -  person Jayant Varshney    schedule 06.03.2013
comment
@Jayant На самом деле он не запускается сам по себе, когда я пытаюсь запустить себя, я получаю эту ошибку, прежде чем выполнять какую-либо операцию ...   -  person Lakshmi    schedule 06.03.2013


Ответы (3)


Обычно такая ошибка возникает из-за рекурсивного бесконечного цикла. У вас есть собственный код, который выполняется при запуске сервера?

person Gab    schedule 06.03.2013
comment
нет, у меня нет собственного кода, выполняемого на самом деле в maven pom. Я добавил зависимость solrj, а также зависимость от ядра solr... я понимаю, что есть какой-то бесконечный цикл, но не могу определить, из-за чего проверьте мои конфигурации, что-то не так с этим? - person Lakshmi; 06.03.2013

Основой этой ошибки было использование как Solrj, так и Spring-data-solr, это в основном из-за того, что регистратор, используемый в этих API, рекурсивно вызывает друг друга до тех пор, пока выдается ошибка переполнения стека, сбивающая кота. Поэтому я удалил зависимость spring-data-solr из моего файла pom.

The purpose of slf4j-jcl module is to delegate or redirect calls made to an SLF4J logger to jakarta commons logging (JCL). 

The purpose of the jcl-over-slf4j module is to redirect calls made to a JCL logger to SLF4J.

 If both slf4j-jcl.jar and jcl-over-slf4j.jar are present on the class path, then a StackOverflowError will inevitably occur immediately after the first invocation of an SLF4J or a JCL logger. 

Проблема описана по ссылке http://www.slf4j.org/legacy.html.

Попытка найти, есть ли обходной путь для того же самого.

person Lakshmi    schedule 04.04.2013

Что вы имеете в виду, когда говорите, что запускаете свое приложение? Вы выполняете какой-то поиск или имеете в виду, когда загружается страница приветствия? Есть ли определенная страница, к которой вы обращаетесь по умолчанию при запуске приложения? Вы пытались добавить некоторые точки отладки в фрагмент кода, который запускается при запуске вашего приложения? Или вы имеете в виду, что получаете эту ошибку при запуске сервера после развертывания приложения?

person happybuddha    schedule 06.03.2013
comment
При запуске означает, что когда загружается страница приветствия, страница по умолчанию не доступна... нет кода, который запускается.. я просто запускаю свое приложение в eclipse, когда получаю 404 или не могу отобразить ошибку страницы с этой ошибкой вместе без возможности запуска tomcat v7. - person Lakshmi; 06.03.2013
comment
Вы должны прокомментировать некоторую конфигурацию, чтобы определить, какая комбинация вызывает сбой вашего сервера при запуске, а затем, возможно, открыть дефект в одной или обеих технологиях. - person Gab; 06.03.2013
comment
@Gab Я пытался удалить зависимость solr-core, у меня не происходит сбоя сервера, но я получаю следующую ошибку ... org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: соответствующий подстановочный знак является строгим, но нет объявление можно найти для элемента 'solr:solr-server'. - person Lakshmi; 07.03.2013