책은 아주 잘보고 있습니다. 많은 도움도 되었구요....
혼자 하다보니.... 너무 어려운 면이 많네요
여러가지 방도로 해결책을 찾아 보려고 했으나..... 원인을 모르겠습니다...
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))