2012-03-19 5 views
2

OSGi 번들 (net.beaconcontroller.cluster)에서 org.jgroups.blocks.ReplicatedHashMap<Long, net.beaconcontroller.cluster.ControllerInfo>입니다. 문제는 디스 패칭하는 동안 (즉, 원격 끝에있는 ControllerInfo의 비 직렬화) JGroups가 ClassNotFoundException으로 불평합니다. (스택 추적이 첨부되어 있습니다.) 아무 영향이 없다 않았다 net.beaconcontroller.cluster 번들의 시작() 메소드에ClassNotFoundException OSGi 번들에서 직렬화 해제 중

Thread.currentThread().setContextClassLoader(Cluster.class.getClassLoader()) 

라인을 추가. 내가 뭘 놓칠 수 있니?

Caused by: java.lang.ClassNotFoundException: net.beaconcontroller.cluster.ControllerInfo 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506) ~[na:na] 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) ~[na:na] 
     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) ~[na:na] 
     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) ~[na:na] 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ~[na:1.6.0_30] 
     at java.lang.Class.forName0(Native Method) ~[na:1.6.0_30] 
     at java.lang.Class.forName(Class.java:247) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) ~[na:1.6.0_30] 
     at java.util.HashMap.readObject(HashMap.java:1030) ~[na:1.6.0_30] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_30] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_30] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_30] 
     at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_30] 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) ~[na:1.6.0_30] 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) ~[na:1.6.0_30] 
     at org.jgroups.blocks.ReplicatedHashMap.setState(ReplicatedHashMap.java:540) ~[na:na] 
     at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.handleUpEvent(MessageDispatcher.java:497) ~[na:na] 
     at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:558) ~[na:na] 
+0

당신은 조각 호스트로 위해 JGroups를 설정하는 별도의 조각 번들로 ControllerInfo을 이동할 수 있을까요? 그런 식으로 JGroups는 탈 직렬화 중에 ControllerInfo 클래스를 볼 수 있어야합니다. –

답변

0

당신은 당신의 번들의 MANIFEST.MF에 추가하려고 했나 :

Import-Package: net.beaconcontroller.cluster 
관련 문제