OSGI 질문입니다.

178 views
Skip to first unread message

보선 강

unread,
Oct 22, 2009, 2:06:16 AM10/22/09
to OSGi &SpringDM
책은 아주 잘보고 있습니다. 많은 도움도 되었구요....

혼자 하다보니.... 너무 어려운 면이 많네요

여러가지 방도로 해결책을 찾아 보려고 했으나..... 원인을 모르겠습니다...

OSGI 콘솔 환경에서 돌릴려고 합니다....
config.ini 파일에서 같이 올릴 여러 번들들을 다 적어 주었습니다.....

하지만 막상 콘솔에서 실행하면 아래와 같은 오류가 뜨네요.....

orm.notice_1.0.0.jar 이 번들을 config.ini 에 추가 하면 저런 오류가 뜨면서 DB연동도 되지 않습니
다....

spring + ibatis를 사용했습니다...

DB연동에 필요한 파일은 스프링 번들 저장소에서 받아 같이 띄워주었습니다....

./bundles/
com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar@1:start,\
./bundles/com.springsource.org.apache.commons.pool-1.4.0.jar@1:start,\
./bundles/com.springsource.com.ibatis-2.3.4.726.jar@1:start,\
./bundles/com.springsource.oracle.jdbc-10.2.0.2.jar@1:start,\
./bundles/com.springsource.javax.resource-1.5.0.jar@1:start,\


아래로그는 log4j로 log를 기록한 부분입니다.......

아래 오류를 보면 이런 구문이 있는데...

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

분명 ojdbc 번들을 띄워 주었고....

bundle (해당번들번호) 명령어를 쳐... oracle.jdbc.driver.OracleDriver 패키지가 export 되
있는 것을 확인했습니다.

그럼 orm.notice_1.0.0.jar 번들에서도 import 해서 쓸 수 있는게 아닌지요???

(분명 orm.notice_1.0.0.jar 번들의 MANIFEST.MF 파일에서도 oracle.jdbc.driver 패키지를
import 했습니다.)

orm.notice_1.0.0.jar 번들 안에는 SqlMapConfig.xml 파일안에 아래와 같은 구문이 있습니다.

<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver"
value="oracle.jdbc.driver.OracleDriver"/>
.
.
.
</dataSource>
</transactionManager>
<sqlMap resource="orm/notice/config/ORMService.xml"/>




1328 [SpringOsgiExtenderThread-2] INFO [2009-10-22 14:40:56]
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext
- Bean factory for application context
[org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext@142bece]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@3c342b
1328 [SpringOsgiExtenderThread-3] INFO [2009-10-22 14:40:56]
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext
- Bean factory for application context
[org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext@13ad33d]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@8530b8
1344 [SpringOsgiExtenderThread-1] INFO [2009-10-22 14:40:56]
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext
- Bean factory for application context
[org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext@1b60280]:
org.springframework.beans.factory.support.DefaultListableBeanFactory@419d05
1359 [SpringOsgiExtenderThread-2] INFO [2009-10-22 14:40:56]
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor
- No outstanding OSGi service dependencies, completing initialization
for OsgiBundleXmlApplicationContext(bundle=orm.logs,
config=osgibundle:/META-INF/spring/*.xml)
1359 [SpringOsgiExtenderThread-3] INFO [2009-10-22 14:40:56]
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor
- No outstanding OSGi service dependencies, completing initialization
for OsgiBundleXmlApplicationContext(bundle=orm.contentadmin,
config=osgibundle:/META-INF/spring/*.xml)
1375 [SpringOsgiExtenderThread-1] INFO [2009-10-22 14:40:56]
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor
- No outstanding OSGi service dependencies, completing initialization
for OsgiBundleXmlApplicationContext(bundle=orm.notice,
config=osgibundle:/META-INF/spring/*.xml)
1375 [SpringOsgiExtenderThread-5] INFO [2009-10-22 14:40:56]
org.springframework.beans.factory.support.DefaultListableBeanFactory
- Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@8530b8:
defining beans
[healthContentFavoriteAdmin,healthContentFavoriteAdminService]; root
of factory hierarchy
1375 [SpringOsgiExtenderThread-4] INFO [2009-10-22 14:40:56]
org.springframework.beans.factory.support.DefaultListableBeanFactory
- Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@3c342b:
defining beans [logAdmin,exportedLogAdmin]; root of factory hierarchy
1375 [SpringOsgiExtenderThread-6] INFO [2009-10-22 14:40:56]
org.springframework.beans.factory.support.DefaultListableBeanFactory
- Pre-instantiating singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@419d05:
defining beans [noticeProvider,noticeProviderService]; root of factory
hierarchy
1391 [WebExtender-Init] INFO [2009-10-22 14:40:56]
org.springframework.osgi.web.deployer.jetty.JettyWarDeployer - No
Jetty Server set; looking for one in the OSGi service registry...
1437 [WebExtender-Init] WARN [2009-10-22 14:40:56]
org.springframework.aop.framework.Cglib2AopProxy - Unable to proxy
method [public final void org.mortbay.component.AbstractLifeCycle.start
() throws java.lang.Exception] because it is final: All calls to this
method via a proxy will be routed directly to the proxy.
1437 [WebExtender-Init] WARN [2009-10-22 14:40:56]
org.springframework.aop.framework.Cglib2AopProxy - Unable to proxy
method [public final void org.mortbay.component.AbstractLifeCycle.stop
() throws java.lang.Exception] because it is final: All calls to this
method via a proxy will be routed directly to the proxy.
1562 [SpringOsgiExtenderThread-6] ERROR [2009-10-22 14:40:56]
com.ibatis.common.jdbc.SimpleDataSource - SimpleDataSource: Error
while loading properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass
(BundleLoader.java:402)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass
(BundleLoader.java:347)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
(DefaultClassLoader.java:83)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.ibatis.common.resources.Resources.classForName(Resources.java:
267)
at com.ibatis.common.resources.Resources.instantiate(Resources.java:
283)
at com.ibatis.common.jdbc.SimpleDataSource.initialize
(SimpleDataSource.java:199)
at com.ibatis.common.jdbc.SimpleDataSource.<init>
(SimpleDataSource.java:116)
at
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.initialize
(SimpleDataSourceFactory.java:31)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$9.process
(SqlMapConfigParser.java:220)
at com.ibatis.common.xml.NodeletParser.processNodelet
(NodeletParser.java:121)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
105)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
102)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
102)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
(SqlMapConfigParser.java:46)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient
(SqlMapClientBuilder.java:63)
at orm.ibatis.AbstractORMIBatisService.setResource
(AbstractORMIBatisService.java:32)
at orm.ibatis.AbstractORMIBatisService.<init>
(AbstractORMIBatisService.java:22)
at orm.notice.NoticeProvider.<init>(NoticeProvider.java:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance
(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at org.springframework.beans.BeanUtils.instantiateClass
(BeanUtils.java:100)
at
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate
(SimpleInstantiationStrategy.java:87)
at
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor
(ConstructorResolver.java:248)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor
(AbstractAutowireCapableBeanFactory.java:925)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance
(AbstractAutowireCapableBeanFactory.java:835)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean
(AbstractAutowireCapableBeanFactory.java:440)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean
(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
(DefaultListableBeanFactory.java:429)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization
(AbstractApplicationContext.java:728)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access
$1600(AbstractDelegatedExecutionApplicationContext.java:69)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext
$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL
(PrivilegedUtils.java:85)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh
(AbstractDelegatedExecutionApplicationContext.java:320)
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor
$CompleteRefreshTask.run
(DependencyWaiterApplicationContextExecutor.java:136)
at java.lang.Thread.run(Thread.java:595)
1594 [SpringOsgiExtenderThread-6] INFO [2009-10-22 14:40:56]
org.springframework.beans.factory.support.DefaultListableBeanFactory
- Destroying singletons in
org.springframework.beans.factory.support.DefaultListableBeanFactory@419d05:
defining beans [noticeProvider,noticeProviderService]; root of factory
hierarchy
1594 [SpringOsgiExtenderThread-6] ERROR [2009-10-22 14:40:56]
org.springframework.osgi.extender.internal.activator.ContextLoaderListener
- Application context refresh failed (OsgiBundleXmlApplicationContext
(bundle=orm.notice, config=osgibundle:/META-INF/spring/*.xml))
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'noticeProvider' defined in URL [bundleentry://
45/META-INF/spring/service-osgi.xml]: Instantiation of bean failed;
nested exception is
org.springframework.beans.BeanInstantiationException: Could not
instantiate bean class [iop.orm.notice.NoticeProvider]: Constructor
threw exception; nested exception is java.lang.RuntimeException: Error
occurred. Cause: com.ibatis.common.xml.NodeletException: Error
parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/
sqlMapConfig/transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: Error initializing
DataSource. Could not instantiate DataSourceFactory. Cause:
java.lang.RuntimeException: SimpleDataSource: Error while loading
properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor
(ConstructorResolver.java:254)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor
(AbstractAutowireCapableBeanFactory.java:925)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance
(AbstractAutowireCapableBeanFactory.java:835)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean
(AbstractAutowireCapableBeanFactory.java:440)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory
$1.getObject(AbstractBeanFactory.java:264)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean
(AbstractBeanFactory.java:261)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:185)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean
(AbstractBeanFactory.java:164)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
(DefaultListableBeanFactory.java:429)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization
(AbstractApplicationContext.java:728)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access
$1600(AbstractDelegatedExecutionApplicationContext.java:69)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext
$4.run(AbstractDelegatedExecutionApplicationContext.java:355)
at
org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL
(PrivilegedUtils.java:85)
at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh
(AbstractDelegatedExecutionApplicationContext.java:320)
at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor
$CompleteRefreshTask.run
(DependencyWaiterApplicationContextExecutor.java:136)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.beans.BeanInstantiationException: Could
not instantiate bean class [orm.notice.NoticeProvider]: Constructor
threw exception; nested exception is java.lang.RuntimeException: Error
occurred. Cause: com.ibatis.common.xml.NodeletException: Error
parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/
sqlMapConfig/transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: Error initializing
DataSource. Could not instantiate DataSourceFactory. Cause:
java.lang.RuntimeException: SimpleDataSource: Error while loading
properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at org.springframework.beans.BeanUtils.instantiateClass
(BeanUtils.java:115)
at
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate
(SimpleInstantiationStrategy.java:87)
at
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor
(ConstructorResolver.java:248)
... 19 more
Caused by: java.lang.RuntimeException: Error occurred. Cause:
com.ibatis.common.xml.NodeletException: Error parsing XML. Cause:
java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/
transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: Error initializing
DataSource. Could not instantiate DataSourceFactory. Cause:
java.lang.RuntimeException: SimpleDataSource: Error while loading
properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
(SqlMapConfigParser.java:49)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient
(SqlMapClientBuilder.java:63)
at orm.ibatis.AbstractORMIBatisService.setResource
(AbstractORMIBatisService.java:32)
at orm.ibatis.AbstractORMIBatisService.<init>
(AbstractORMIBatisService.java:22)
at orm.notice.NoticeProvider.<init>(NoticeProvider.java:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance
(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at org.springframework.beans.BeanUtils.instantiateClass
(BeanUtils.java:100)
... 21 more
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/
transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: Error initializing
DataSource. Could not instantiate DataSourceFactory. Cause:
java.lang.RuntimeException: SimpleDataSource: Error while loading
properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse
(SqlMapConfigParser.java:46)
... 30 more
Caused by: java.lang.RuntimeException: Error parsing XPath '/
sqlMapConfig/transactionManager/dataSource/end()'. Cause:
com.ibatis.sqlmap.client.SqlMapException: Error initializing
DataSource. Could not instantiate DataSourceFactory. Cause:
java.lang.RuntimeException: SimpleDataSource: Error while loading
properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at com.ibatis.common.xml.NodeletParser.processNodelet
(NodeletParser.java:123)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
105)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
102)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:
102)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
... 31 more
Caused by: com.ibatis.sqlmap.client.SqlMapException: Error
initializing DataSource. Could not instantiate DataSourceFactory.
Cause: java.lang.RuntimeException: SimpleDataSource: Error while
loading properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$9.process
(SqlMapConfigParser.java:227)
at com.ibatis.common.xml.NodeletParser.processNodelet
(NodeletParser.java:121)
... 36 more
Caused by: java.lang.RuntimeException: SimpleDataSource: Error while
loading properties. Cause: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at com.ibatis.common.jdbc.SimpleDataSource.initialize
(SimpleDataSource.java:210)
at com.ibatis.common.jdbc.SimpleDataSource.<init>
(SimpleDataSource.java:116)
at
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.initialize
(SimpleDataSourceFactory.java:31)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$9.process
(SqlMapConfigParser.java:220)
... 37 more
Caused by: java.lang.ClassNotFoundException:
oracle.jdbc.driver.OracleDriver
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass
(BundleLoader.java:402)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass
(BundleLoader.java:347)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass
(DefaultClassLoader.java:83)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.ibatis.common.resources.Resources.classForName(Resources.java:
267)
at com.ibatis.common.resources.Resources.instantiate(Resources.java:
283)
at com.ibatis.common.jdbc.SimpleDataSource.initialize
(SimpleDataSource.java:199)
... 40 more
1812 [SpringOsgiExtenderThread-5] INFO [2009-10-22 14:40:57]
org.springframework.osgi.service.exporter.support.OsgiServiceFactoryBean
- Publishing service under classes
[{orm.contentadmin.api.IHealthContentFavoriteAdmin}]
1828 [SpringOsgiExtenderThread-5] INFO [2009-10-22 14:40:57]
org.springframework.osgi.context.support.OsgiBundleXmlApplicationContext
- Publishing application context as OSGi service with properties
{org.springframework.context.service.name=orm.contentadmin, Bundle-
SymbolicName=orm.contentadmin, Bundle-Version=1.0.0}
1828 [SpringOsgiExtenderThread-5] INFO [2009-10-22 14:40:57]
org.springframework.osgi.extender.internal.activator.ContextLoaderListener
- Application context successfully refreshed
(OsgiBundleXmlApplicationContext(bundle=orm.contentadmin,
config=osgibundle:/META-INF/spring/*.xml))

xguru

unread,
Oct 22, 2009, 7:44:50 PM10/22/09
to OSGi &SpringDM
제가 질문하신 환경을 다 알고있지 못해서 검색을 통해 답변드리는게 조금 조심스럽습니다만...
많은 JDBC driver 들의 경우 클래스로더를 자신들만의 것을 이용하는 경우가 많아서
번들별 클래스로더가 구성되는 OSGi 환경의 경우 ClassNotFoundException 이 뜨는 경우가 많습니다.

검색해보니 http://jira.springframework.org/browse/OSGI-269
이와 같은 비슷한 보고가 있구요. 위 이슈에 해결법소스가 링크되어 있습니다.

http://jira.springframework.org/secure/attachment/13077/OsgiSingleConnectionDataSource.java

또 다른 방법으로 http://nya.springnote.com/pages/3423889 에 올라온 방법처럼

URL url = new URL("file:C:\\workspace_ojt/enterprise-ojt/lib/
ojdbc14.jar");
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[]
{ url }, this.getClass().getClassLoader());
Driver driver = (Driver) Class.forName
("oracle.jdbc.driver.OracleDriver", true, classLoader).newInstance
();
conn = driver.connect("jdbc:oracle:thin:@localhost:1521:xe", info);

의 방법으로 직접 드라이버를 로드하는 방법이 있을수 있을듯 합니다.

제가 질문하신 환경을 만들지 못해서 테스트는 못해봤습니다.
ibatis 가 osgi 환경에서 이런저런 에러가 있다는 보고들이 있는거로 봐서는..
정 안될경우 ibatis 내부의 DataSource 부분을 수정하셔야 될지도 모르겠네요.

위의 2가지 방법으로 해보시고 안되면 말씀해주세요 ^^;

보선 강

unread,
Oct 26, 2009, 8:34:10 AM10/26/09
to OSGi &SpringDM
현재 ibatis를 사용하고 있기 때문에 위 2가지 경우로 어떻게 할 수 없을거 같네요.....

말씀하신데로 ibatis 내부의 DataSource 부분을 수정하는 방법밖에 없는 건가보네요.....

이건 도대체 어떻게 해야할지 앞이 안보이네요....

OSGI 환경에서 spring + ibatis 로 DB 연동을 하는 자료나 예시 같은걸 가지고 계신분은 없으시나요.... ㅜㅜ
답답하네요

OSGI환경에서 IBatis자체의 고질적인 문제라면;;;;;

xguru

unread,
Oct 27, 2009, 1:07:23 AM10/27/09
to OSGi &SpringDM
iBatis 문제이기 보다는 Oracle JDBC 드라이버가 문제일수도 있을듯 합니다.

mysql 의 경우는 비슷한 글이 있긴 하네요.

http://osgiknowledge.wordpress.com/2008/07/22/adding-ibatis-to-osgi-application/

제가 DB 쪽을 주로 사용하지 않아서 도움드리기가 난감하네요.
웹을 검색해봐도 적절한 예제가 보이지 않구요 ㅠㅠ

Reply all
Reply to author
Forward
0 new messages