Профилирование приложения Corda - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь запустить некоторые инструментальные средства / профилирование для CorDapp - для этого вопроса здесь образец шнура: https://github.com/corda/cordapp-example.git версия выпуска-3.

Однако, когда я пытаюсь подключить VisualVM кPID работает в соответствии с jvm runtime из оболочки Corda, я получаю ошибки, подобные следующим:

(на вкладке Профиль VisualVM)

Mon Jun 11 15:17:36 BST 2018>>> Profiler Agent: JNI OnLoad Initializing... Profiler Agent: JNI OnLoad Initialized successfully Profiler Agent: Waiting for connection on port 5140 (Protocol version: 18) Profiler Agent: Established connection with the tool Profiler Agent: Local accelerated session Profiler Agent Error: Exception when handling command from client: java.io.InvalidClassException: filter status: REJECTED Profiler Agent: Connection with agent closed

или(Из вкладки «Сэмплер»)

CPU sampling: Not available. Cannot access threads in target application. Check the logfile for details (use Help | About | Logfile).

Лог-файл дает мне эту полезную ошибку:

WARNING [org.netbeans.modules.profiler.NetBeansProfiler]: IDEAppStatusHandler - error: {)} *** Profiler error (Mon Jun 11 15:17:59 BST 2018): exception while trying to get response from the target JVM: java.net.SocketException: Connection reset INFO [com.sun.tools.visualvm.sampler.cpu.ThreadInfoProvider]: mxbeans.getThreadMXBean() returns null for Application [id: localhost-10884, pid: 10884, host: localhost]

Я пробовал это обана MacOS и Ubuntu, и я получаю ту же проблему - так что я не думаю, что это проблема установки Java.

Есть указатели!?

1 Ответ

0 голосов
/ 11 июня 2018

VisualVM использует сериализацию Java.Corda запрещает сериализацию Java по соображениям безопасности.

См. https://github.com/corda/corda/blob/release-V3/node/src/main/kotlin/net/corda/node/internal/NodeStartup.kt#L204:

open protected fun banJavaSerialisation(conf: NodeConfiguration) {
    SerialFilter.install(if (conf.notary?.bftSMaRt != null) ::bftSMaRtSerialFilter else ::defaultSerialFilter)
}
...