스프링에서 spring-data로 mongoDB를 쓰시는 분의 조언을 구합니다.

300 views
Skip to first unread message

파라미르

unread,
Jun 21, 2011, 2:48:13 AM6/21/11
to Korea Spring User Group
안녕하세요, spring을 사용한 지 얼마 되지 않은 초보 개발자입니다.

다름이 아니라 저희 프로젝트에서 spring-data-mongodb 1.0.0.M3로 mongodb를 쓰고 있는데요,

eclipse에 붙여 놓은 tomcat에서 다음과 같은 에러가 발생합니다.

심각: Exception sending context initialized event to listener instance
of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'ActivityService': Injection of autowired
dependencies failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not
autowire field: com.my.band.server.web.data.mongo.ActivityBonusDao
com.my.band.server.web.service.impl.ActivityServiceImpl.activityBonusDao;
nested exception is java.lang.NoClassDefFoundError: org/
springframework/data/document/mongodb/MongoDbFactory
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:
285)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:
1074)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
517)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
456)
at org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:
288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:
190)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:
580)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:
895)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:
425)
at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:
276)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:
197)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:
47)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:
4205)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:
4704)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:
463)
at
org.apache.catalina.core.StandardService.start(StandardService.java:
525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:
754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanCreationException:
Could not autowire field:
com.my.band.server.web.data.mongo.ActivityBonusDao
com.my.band.server.web.service.impl.ActivityServiceImpl.activityBonusDao;
nested exception is java.lang.NoClassDefFoundError: org/
springframework/data/document/mongodb/MongoDbFactory
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:
502)
at
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:
84)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:
282)
... 28 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/data/
document/mongodb/MongoDbFactory
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getDeclaredConstructors(Class.java:1836)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:
227)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:
930)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:
903)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:
485)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:
456)
at org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:
222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:
288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:
190)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:
844)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:
786)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:
703)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:
474)
... 30 more
Caused by: java.lang.ClassNotFoundException:
org.springframework.data.document.mongodb.MongoDbFactory
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:
1680)
at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:
1526)
... 46 more

maven으로 라이브러리를 제대로 붙였는데도 이런 문제가 발생하네요.
리눅스 서버에 톰캣을 올릴 때는 제대로 작동합니다.

이런 문제점을 겪으신 분이 있으신지, 어떻게 해결하셨는지 궁금하네요.

운영체제는 win7 32bit를 사용 중이고 eclipse 버전은
Version: Helios Service Release 1
Build id: 20100917-0705
이고
tomcat 버전은 6.0.32입니다.

spring 버전은 3.0.5.RELEASE 입니다.

귤이

unread,
Jun 21, 2011, 3:34:40 AM6/21/11
to ks...@googlegroups.com

mongo db 는 대용량 저장에 대한 특화 db 인데,

처리 하시는 db 데이터 량이 대용량 이신가보네요.

 

에러 메세지 내부에서.

bean 생성이 안되는것 같은데요.

 

 

'ActivityService'  에서

 

com.my.band.server.web.data.mongo.ActivityBonusDao
com.my.band.server.web.service.impl.ActivityServiceImpl.activityBonusDao

 

두개의 빈에 대해 NoClassDefFoundError

 

org/springframework/data/document/mongodb/MongoDbFactory

 

문제 인데 관련 된게 의존성에 관한 오류로 표기되는데요.

 

 

 

maven 을 사용하시면 의존 라이브러리 관련하여 pom.xml 파일에서

톰켓이 물고 있는 라이브러리를 가지고 있는지 모르겠군요.

 

maven 에서는 로컬라이브러리 경로를 별개로 가지고 있는데,

해당 로컬라이브러리에 톰켓에서 사용하시는 라이브러리가 전부 있는지 체크하시고

 

없을경우 maven 에서 pom.xml 의 라이브러리 의존관계를 잡아 주셔서

해당 mongo db 등 연관 라이브러리를 가져 가실수 있게 설정 해주셔야 겠네요.

 

동일 프로젝트 진행하시는 분 중 정상적으로 되시는 분이 계시면

 pom.xml 파일을 받아 체크 해보시면 될것같은데요.

 

 

그리고 maven 처음 초기 프로젝트 잡으실때 '아키타입'이 정확하게 잡혔는지도 체크 하셔야 되겠구요.

 

 

 

--------- 원본 메일 ---------
보낸사람: 파라미르 <para...@gmail.com>
받는사람 : Korea Spring User Group <ks...@googlegroups.com>
날짜: 2011년 6월 21일 화요일, 15시 48분 13초 +0900
제목: [KSUG] 스프링에서 spring-data로 mongoDB를 쓰시는 분의 조언을 구합니다.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+unsub...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.





jinun park

unread,
Jun 21, 2011, 5:04:22 AM6/21/11
to ks...@googlegroups.com
tomcat 의존성은 모두 만족합니다.

(리눅스 서버에 깔린 tomcat에서는 오류 없이 돌아갑니다)

아키타입은 어떤 점을 확인해야 하나요?



2011. 6. 21. 16:34 "귤이" <dad...@hanmail.net> 작성:

그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.

귤이

unread,
Jun 21, 2011, 5:57:43 AM6/21/11
to ks...@googlegroups.com

maven 아키 타입이 다양한데 각 아키타입 별로

maven 기본 설정 부분이 다를겁니다.

 

mongoDB 사용하신다고 하셨으니 관련된 maven 아키타입이 등록되어 있으실것이라 봅니다.

 

해당 프로젝트가 어떤 성격의 프로젝트 인지 확인이 되어야되고요..:D

 

 

저는 mongoDB 관련 하여 maven 을 사용해보지 않아 정확한 답변은 어려울 것 같아요.

 

 

 

--------- 원본 메일 ---------
보낸사람: jinun park <para...@gmail.com>
받는사람 : "ks...@googlegroups.com" <ks...@googlegroups.com>
날짜: 2011년 6월 21일 화요일, 18시 04분 22초 +0900
제목: Re: [KSUG] 스프링에서 spring-data로 mongoDB를 쓰시는 분의 조언을 구합니다.


jinun park

unread,
Jun 21, 2011, 8:41:33 AM6/21/11
to ks...@googlegroups.com, <ksug@googlegroups.com>
감사합니다. 아키타입을 살펴 보고 말씀드리겠습니다.



2011. 6. 21. 18:57 "귤이" <dad...@hanmail.net> 작성:

Reply all
Reply to author
Forward
0 new messages