Corda类org.hibernate.exception.SQLGrammarException未注释或不在白名单上,因此不能用于序列化

Corda类org.hibernate.exception.SQLGrammarException未注释或不在白名单上,因此不能用于序列化,corda,Corda,当我试图查询vault中的自定义状态时,出现以下错误。 我的网络中有3个节点(节点1连接到sql server数据库,其他节点连接到h2数据库)。查询vault时在节点1上引发以下错误。(rpcOps.vaultQueryBy().states) javax.servlet.ServletException:javax.servlet.ServletException: com.esotericsoftware.kryo.KryoException:类 org.hibernate.excepti

当我试图查询vault中的自定义状态时,出现以下错误。 我的网络中有3个节点(节点1连接到sql server数据库,其他节点连接到h2数据库)。查询vault时在节点1上引发以下错误。(rpcOps.vaultQueryBy().states)

javax.servlet.ServletException:javax.servlet.ServletException: com.esotericsoftware.kryo.KryoException:类 org.hibernate.exception.sqlgrammareexception未注释或位于 白名单,因此不能用于序列化跟踪: 异常(net.corda.core.utilities.Try$Failure) 位于org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 在org.eclipse.jetty.server.server.handle(server.java:561)~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:334) [jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) [jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.io.AbstractConnection$ReadCallback.successed(AbstractConnection.java:279) [jetty-io-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:104) [jetty-io-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) [jetty-io-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.doProduce(eatwatyoukill.java:247) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.product(eatwatyoukill.java:140) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.strategy.eatwatyoukill.run(eatwatyoukill.java:131) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:243) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:679) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:597) [jetty-util-9.4.7.v20170914.jar:9.4.7.v20170914] 在java.lang.Thread.run(Thread.java:748)[?:1.8.0_181]处,由以下原因引起:javax.servlet.ServletException: com.esotericsoftware.kryo.KryoException:类 org.hibernate.exception.sqlgrammareexception未注释或位于 白名单,因此不能用于序列化跟踪: 异常(net.corda.core.utilities.Try$Failure) 位于org.glassfish.jersey.servlet.WebComponent.serviceinpl(WebComponent.java:489) ~[jersey-container-servlet-core-2.25.jar:?] 位于org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) ~[jersey-container-servlet-core-2.25.jar:?] 位于org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) ~[jersey-container-servlet-core-2.25.jar:?] 位于org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) ~[jersey-container-servlet-core-2.25.jar:?] 位于org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) ~[jersey-container-servlet-core-2.25.jar:?] 位于org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841) ~[jetty-servlet-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) ~[jetty-servlet-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) ~[jetty-servlet-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] 位于org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) ~[jetty-server-9.4.7.v20170914.jar:9.4.7.v20170914] ... 14多


Corda限制可通过RPC在节点和客户端之间发送的类型集

在您的例子中,您的流抛出了一个
SQLGrammarException
。节点正试图通过RPC将此对象传递回客户端,但由于它不是可以通过RPC传递的类型之一,因此将引发
KryoException


您需要使用下面描述的过程将
SQLGrammarException
添加到节点的序列化白名单中:。完成此操作后,将正确返回
SQLGrammarException
,您可以对其进行检查。

在这种情况下,当我在序列化白名单中添加SQLGrammarException类时,我现在得到的进一步错误