Hi,

It seems that we are missing an OSGi import for the 
tuscany-binding-rest-runtime bundle. Can you try to add the following to the 
Import-Package header?

org.apache.tuscany.sca.interfacedef.java;version="2.0.0"

Meanwhile, please report the OSGi related issue via our JIRA and I can try to 
help you out.

Thanks,
Raymond
________________________________________________________________ 
Raymond Feng
[email protected]
Apache Tuscany PMC member and committer: tuscany.apache.org
Co-author of Tuscany SCA In Action book: www.tuscanyinaction.com
Personal Web Site: www.enjoyjava.com
________________________________________________________________

On Jun 15, 2010, at 9:13 AM, Alexander Blotny wrote:

> Hi,
> 
> I have a problem to export a REST service via an OSGi bundle. Most of the 
> code is taken from the store example for binding.rest. 
> (http://tuscany.apache.org/documentation-2x/sca-java-bindingrest.html)
> 
> I got following exception:
> 
> java.lang.IllegalStateException: java.lang.NoClassDefFoundError: 
> org/apache/tuscany/sca/interfacedef/java/JavaInterface
>     at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:173)
>     at 
> org.apache.tuscany.sca.node.osgi.impl.NodeManager.bundleStarted(NodeManager.java:117)
>     at 
> org.apache.tuscany.sca.node.osgi.impl.NodeManager.bundleChanged(NodeManager.java:139)
>     at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:916)
>     at 
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)
>     at 
> org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
>     at 
> org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1350)
>     at 
> org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1301)
>     at 
> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:362)
>     at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.updateWorker(AbstractBundle.java:625)
>     at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.update(AbstractBundle.java:572)
>     at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.update(AbstractBundle.java:555)
>     at 
> org.apache.felix.shell.impl.UpdateCommandImpl.execute(UpdateCommandImpl.java:96)
>     at 
> org.apache.felix.shell.impl.Activator$ShellServiceImpl.executeCommand(Activator.java:286)
>     at 
> org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:184)
>     at java.lang.Thread.run(Thread.java:637)
> Caused by: java.lang.NoClassDefFoundError: 
> org/apache/tuscany/sca/interfacedef/java/JavaInterface
>     at 
> org.apache.tuscany.sca.binding.rest.provider.RESTServiceBindingProvider.registerWithJAXRS(RESTServiceBindingProvider.java:217)
>     at 
> org.apache.tuscany.sca.binding.rest.provider.RESTServiceBindingProvider.start(RESTServiceBindingProvider.java:143)
>     at 
> org.apache.tuscany.sca.core.assembly.impl.CompositeActivatorImpl$1.run(CompositeActivatorImpl.java:423)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at 
> org.apache.tuscany.sca.core.assembly.impl.CompositeActivatorImpl.startEndpoint(CompositeActivatorImpl.java:421)
>     at 
> org.apache.tuscany.sca.core.assembly.impl.CompositeActivatorImpl.start(CompositeActivatorImpl.java:377)
>     at 
> org.apache.tuscany.sca.core.assembly.impl.CompositeActivatorImpl.start(CompositeActivatorImpl.java:309)
>     at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:147)
>     ... 15 more
> 
> 
> The bundle has the following structure:
> 
> META-INF  MANIFEST.MF META-INF/maven META-INF/maven <no contents> 
> META-INF/maven/de.fhg.fokus.ngni.xposer.see.samples 
> META-INF/maven/de.fhg.fokus.ngni.xposer.see.samples <no contents> 
> META-INF/maven/de.fhg.fokus.ngni.xposer.see.samples/helloworld-exporter  
> pom.properties  pom.xml OSGI-INF OSGI-INF <no contents> OSGI-INF/sca  
> bundle.componentType  bundle.composite de de <no contents> de/fhg de/fhg <no 
> contents> de/fhg/fokus de/fhg/fokus <no contents> de/fhg/fokus/ngni 
> de/fhg/fokus/ngni <no contents> de/fhg/fokus/ngni/xposer 
> de/fhg/fokus/ngni/xposer <no contents> de/fhg/fokus/ngni/xposer/see 
> de/fhg/fokus/ngni/xposer/see <no contents> 
> de/fhg/fokus/ngni/xposer/see/samples de/fhg/fokus/ngni/xposer/see/samples <no 
> contents> de/fhg/fokus/ngni/xposer/see/samples/helloworld  Activator.class  
> HelloREST.class de/fhg/fokus/ngni/xposer/see/samples/helloworld/impl    
> HelloRESTImpl.class  
> 
> bundle.composite:
> 
> <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912";    
> xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1";    
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";    
> targetNamespace="http://calculator.dosgi";    name="HelloworldComposite"> 
>     <component name="HelloworldComponent">        
> <tuscany:implementation.osgi bundleSymbolicName="helloworld-exporter" 
> bundleVersion="0.0.1" />                      <service 
> name="HelloworldServiceREST">            <tuscany:binding.rest 
> uri="http://localhost:8087/Helloworld"/>        </service>              
> </component>   
> 
> 
> bundle.componentType:
> 
> <componentType xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912";       
>         xmlns:xsd="http://www.w3.org/2001/XMLSchema";               
> xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1";>
>    
>    <service name="HelloworldServiceREST">        <interface.java 
> interface="de.fhg.fokus.ngni.xposer.see.samples.helloworld.HelloREST"/>    
> </service>
> </componentType>
> 
> HelloREST.java:
> 
> @Remotable public interface HelloREST {        @GET    String getAll();       
>  @GET    @Path("{id}")    String getItemById(@PathParam("id") String itemId); 
>        @POST    void addItem(Item item);        @PUT    void updateItem(Item 
> item);        @DELETE    @Path("{id}")    void deleteItem(@PathParam("id") 
> String itemId); }
> 
> 
> HelloRESTImpl.java:
> 
> @Scope("COMPOSITE") public class HelloRESTImpl implements HelloREST {         
>   @Init    public void init() {        System.out.println("INIT");    }    
> public void addItem(Item item) {        System.out.println("add");    }    
> public void deleteItem(String itemId) {        System.out.println("delete");  
>   }    public String getAll() {        return "ALL";    }    public String 
> getItemById(String itemId) {        return itemId;    }    public void 
> updateItem(Item item) {        System.out.println("update");    }     }
> 
> 
> 
> Thanks
> Alex

Reply via email to