Hi,

you can use a similar design like in the takslist example:
https://github.com/cschneider/Karaf-Tutorial/tree/master/tasklist/tasklist-model/src/main/java/net/lr/tasklist/model

The Task class is a simple bean and also implements Serializable. Such
classes can be serialized with most transports.
TimĀ“s approach with DTOs is even simpler but might feel a bit unusual it
also only works with the newest Aries RSA.

In any case put the interface of your service and the classes the interface
needs together. Then it works fine.

Christian

Am Mo., 23. Juli 2018 um 11:30 Uhr schrieb ceugster <
christian.eugs...@gmx.net>:

> I have three bundles: an api bundle with simple interface Car (one
> attribute
> "name") and a service interface with methods createCar and getCars. An jpa
> bundle that implements these interfaces and a consumer bundle, that lists
> the cars, when activated. When all bundles are in the same karaf instance,
> then everything works fine (thanks to jbonofre). Now I've extended the car
> service implementation with the properties "service.exported.interfaces=*"
> and "aries.rsa.port=8201" as in the aries echo example to add remote
> service
> capability and started the consumer (service component) bundle in a separat
> karaf instance. Starting this bundle is ok, it logs, that it gets a
> reference to the carService. When the component activates it calls
> carService.getCars(). When there are no cars yet, it displays "0 cars
> found", that's ok. When I add cars to the database in the server instance
> and refresh the consumer bundle, then I get an exception saying, that class
> CarImpl could not be found (see below). My question is: Why the consumer
> needs a CarImpl instance? Is the interface car not enough? If so, how I
> group the bundles in meaningful way to fulfill this requirement?
>
> 2018-07-23T11:13:39,731 | ERROR | pipe-start 79    | consumer
>
> |  -  -  | bundle example.consumer:1.0.0
> (79)[org.example.consumer.CarConsumer(6)] : The activate method has thrown
> an exception
> org.osgi.framework.ServiceException: Error calling 192.168.1.33:8201
> method:
> getCars
>         at
>
> org.apache.aries.rsa.provider.tcp.TcpInvocationHandler.handleSyncCall(TcpInvocationHandler.java:115)
> ~[?:?]
>         at
>
> org.apache.aries.rsa.provider.tcp.TcpInvocationHandler.invoke(TcpInvocationHandler.java:66)
> ~[?:?]
>         at com.sun.proxy.$Proxy63.getCars(Unknown Source) ~[?:?]
>         at org.example.consumer.CarConsumer.activate(CarConsumer.java:38)
> ~[?:?]
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:?]
>         at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
>         at
>
> org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228)
> ~[52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41)
> ~[52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664)
> ~[52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:334)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:947)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:919)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:750)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:661)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:427)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339)
> [52:org.apache.felix.scr:2.1.0]
>         at
> org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:381)
> [52:org.apache.felix.scr:2.1.0]
>         at
> org.apache.felix.scr.impl.Activator.access$200(Activator.java:49)
> [52:org.apache.felix.scr:2.1.0]
>         at
> org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:263)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49)
> [52:org.apache.felix.scr:2.1.0]
>         at
>
> org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)
> [?:?]
>         at
>
> org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)
> [?:?]
>         at
> org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)
> [?:?]
>         at
>
> org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
> [?:?]
>         at
>
> org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
> [?:?]
>         at
>
> org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
> [?:?]
>         at
>
> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
> [?:?]
>         at
> org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) [?:?]
>         at org.apache.felix.framework.Felix.startBundle(Felix.java:2174)
> [?:?]
>         at
> org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) [?:?]
>         at
> org.apache.karaf.bundle.command.Start.executeOnBundle(Start.java:38)
> [16:org.apache.karaf.bundle.core:4.2.1.SNAPSHOT]
>         at
>
> org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:65)
> [16:org.apache.karaf.bundle.core:4.2.1.SNAPSHOT]
>         at
>
> org.apache.karaf.bundle.command.BundlesCommand.execute(BundlesCommand.java:55)
> [16:org.apache.karaf.bundle.core:4.2.1.SNAPSHOT]
>         at
>
> org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at
>
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at
>
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> [34:org.apache.karaf.shell.core:4.2.1.SNAPSHOT]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
>         at
>
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [?:?]
>         at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [?:?]
>         at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: java.lang.ClassNotFoundException: org.example.impl.CarImpl
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
> ~[?:?]
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:?]
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1859)
> ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl.tryImplicitBootDelegation(BundleWiringImpl.java:1788)
> ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1741)
> ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1617)
> ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
> ~[?:?]
>         at
>
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
> ~[?:?]
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
>         at java.lang.Class.forName0(Native Method) ~[?:?]
>         at java.lang.Class.forName(Class.java:348) ~[?:?]
>         at
> java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:686)
> ~[?:?]
>         at
>
> org.apache.aries.rsa.provider.tcp.ser.BasicObjectInputStream.resolveClass(BasicObjectInputStream.java:56)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1866)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1749)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) ~[?:?]
>         at java.util.ArrayList.readObject(ArrayList.java:797) ~[?:?]
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[?:?]
>         at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
>         at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
>         at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571)
> ~[?:?]
>         at
> java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) ~[?:?]
>         at
>
> org.apache.aries.rsa.provider.tcp.TcpInvocationHandler.parseResult(TcpInvocationHandler.java:139)
> ~[?:?]
>         at
>
> org.apache.aries.rsa.provider.tcp.TcpInvocationHandler.handleSyncCall(TcpInvocationHandler.java:111)
> ~[?:?]
>         ... 54 more
>
> Thanks!
>
>
>
> --
> Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html
>


-- 
-- 
Christian Schneider
http://www.liquid-reality.de

Computer Scientist
http://www.adobe.com

Reply via email to