There is an issue in the SDO OSGi enablement. SDOUtil references commonj.sdo.impl.HelperProvider.INSTANCE which is instantiated in a static block. It tries to discover the implementation class using either a system property named "commonj.sdo.impl.HelperProvider" or a configuration file as META-INF/services/commonj.sdo.impl.HelperProvider. The classloading won't work with OSGi.

There is a bundle activator (org.apache.tuscany.sdo.osgi.SdoBundleActivator) for tuscany-sdo-impl bundle which tries to set up the instance as follows:
        public void start(BundleContext bundleContext) throws Exception {
                
HelperProvider.setDefaultInstance(this.getClass().getClassLoader());
        }

Can you try to start the tuscany-sdo-impl bundle first before you use any SDO APIs?

Thanks,
Raymond
--------------------------------------------------
From: "Claus Straube" <[email protected]>
Sent: Wednesday, December 09, 2009 5:53 AM
To: <[email protected]>
Subject: Nullpointer Exception deploying Tuscany SDO in Spring DM Server

Hi all,

we're trying to deploy apache tuscany sdo (tuscany-sdo-lib-1.1.1.jar) in spring dm server (2.0.0.M6 / OpenJDK 1.6.0_0). This works without exception and the state of the bundle is active. But we can't see any exported interfaces (what we can do with other tuscany bundles). So far no problem, but if we call the bundle we get a nullpointer exception setting the helper context.

This is the implementation:

public class Foo {

private HelperContext scope;

public HelperContext getScope() {
       if(this.scope == null) {
           this.scope = SDOUtil.createHelperContext();
       }
       return this.scope;
   }

}

This is our stacktrace:

[2009-12-09 11:33:56.256] ltMessageListenerContainer-1 org.springframework.jms.listener.DefaultMessageListenerContainer Execution of JMS message listener failed, and no ErrorHandler has been set. java.lang.ExceptionInInitializerError at com.catify.core.sdo.internal.services.impl.SdoServiceImpl.getScope(SdoServiceImpl.java:109) at com.catify.core.sdo.internal.services.impl.SdoServiceImpl.registerXmlSchema(SdoServiceImpl.java:32)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:616)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58) at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
  at $Proxy226.registerXmlSchema(Unknown Source)
at com.catify.test.adapter.ws.internal.WebserviceAdapterCall.call(WebserviceAdapterCall.java:46)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:193) at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:115) at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:122) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61) at org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88) at org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49) at org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148) at org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54) at org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48) at org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:83) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:559) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:976) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:968) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:870)
  at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.NullPointerException
  at org.apache.tuscany.sdo.api.SDOUtil.<clinit>(SDOUtil.java:48)
  ... 47 common frames omitted

Any help is welcome. Thanks in advance.

Best regards - Claus

--
claus straube

Reply via email to