Веб-сервер Spring не может загрузить Cordapp.Не удается найти государственный класс.Ошибка - AMQ214000: не удалось вызвать сообщение - PullRequest
0 голосов
/ 03 июня 2019

Я в процессе переноса моего cordapp с Corda v1.0 на Corda v4.0. Я следую пошаговому методу миграции.

При переносе cordapp из Corda v1.0 в Corda v2.0 узлы успешно развертываются и работают, но при запуске веб-сервера Springboot я получаю сообщение об ошибке - "java.lang.ClassNotFoundException: net.corda.bgc. contract.State "в окне cmd узла.

[Узлы и веб-сервер успешно работают с Corda v1.0.]

Ниже приведены подробности ошибки -

Сервер Springbootweb после успешного запуска зависает при подключении к CorDapp. Ниже приведена трассировка стека из окна cmd веб-сервера -

I 17:50:49 1 Server.doStart - Started @29133ms
   I 17:50:54 1 RPCClient.logElapsedTime - Startup took 3682 msec
<==I 17:50:54 1 ThreadPoolTaskExecutor.initialize - Initializing ExecutorService  'clientInboundChannelExecutor'
I 17:50:54 1 ThreadPoolTaskExecutor.initialize - Initializing ExecutorService  'clientOutboundChannelExecutor'
> :server:runMyCorpUSAServer

Ниже приведена трассировка стека из окна cmd узла -

Mon Jun 03 18:08:07 IST 2019>>> E 18:09:20+0530 [Thread-1 (ActiveMQ-client-global-threads)] core.client.run - AMQ214000: Failed to call onMessage
 java.lang.ClassNotFoundException: net.corda.bgc.contract.State
        at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_212]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_212]
        at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_212]
        at java.lang.Class.forName0(Native Method) ~[?:1.8.0_212]
        at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_212]
        at net.corda.nodeapi.internal.serialization.ClassSerializer.read(Kryo.kt:526) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.ClassSerializer.read(Kryo.kt:523) ~[corda-node-api-2.0.0.jar:?]
        at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:813) ~[kryo-4.0.0.jar:?]
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$CollectionsSingletonListSerializer.read(DefaultSerializers.java:577) ~[kryo-4.0.0.jar:?]
        at com.esotericsoftware.kryo.serializers.DefaultSerializers$CollectionsSingletonListSerializer.read(DefaultSerializers.java:567) ~[kryo-4.0.0.jar:?]
        at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:813) ~[kryo-4.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme$deserialize$$inlined$use$lambda$1$1.invoke(SerializationScheme.kt:209) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme$deserialize$$inlined$use$lambda$1$1.invoke(SerializationScheme.kt:152) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme.withContext(SerializationScheme.kt:191) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme.access$withContext(SerializationScheme.kt:152) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme$deserialize$$inlined$use$lambda$1.execute(SerializationScheme.kt:206) ~[corda-node-api-2.0.0.jar:?]
        at com.esotericsoftware.kryo.pool.KryoPoolQueueImpl.run(KryoPoolQueueImpl.java:61) ~[kryo-4.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.AbstractKryoSerializationScheme.deserialize(SerializationScheme.kt:205) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:115) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:53) ~[corda-core-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:115) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:95) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:67) ~[corda-core-2.0.0.jar:?]
        at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:115) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.nodeapi.RPCApi$ClientToServer$Companion.fromClientMessage(RPCApi.kt:234) ~[corda-node-api-2.0.0.jar:?]
        at net.corda.node.services.messaging.RPCServer.clientArtemisMessageHandler(RPCServer.kt:263) ~[corda-node-2.0.0.jar:?]
        at net.corda.node.services.messaging.RPCServer.access$clientArtemisMessageHandler(RPCServer.kt:76) ~[corda-node-2.0.0.jar:?]
        at net.corda.node.services.messaging.RPCServer$createConsumerSessions$1.invoke(RPCServer.kt:189) ~[corda-node-2.0.0.jar:?]
        at net.corda.node.services.messaging.RPCServer$createConsumerSessions$1.invoke(RPCServer.kt:76) ~[corda-node-2.0.0.jar:?]
        at net.corda.node.services.messaging.RPCServerKt$sam$MessageHandler$b852d39b.onMessage(RPCServer.kt) ~[corda-node-2.0.0.jar:?]
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:997) ~[artemis-core-client-2.1.0.jar:2.1.0]
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:49) ~[artemis-core-client-2.1.0.jar:2.1.0]
        at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1120) [artemis-core-client-2.1.0.jar:2.1.0]
        at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:101) [artemis-commons-2.1.0.jar:2.1.0]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_212]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_212]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_212] 

Пожалуйста, предоставьте информацию относительно выше.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 июня 2019

Проблема была решена путем копирования jar-файла cordapp в каталог «plugins» каждого узла.

В Corda V1 копирование файла jar cordapp в каталог «plugins» каждого узла выполнялось процессом, тогда как в Corda V2, похоже, мы должны делать это вручную.Пожалуйста, поправьте меня, если я ошибаюсь.

...