【问题标题】:Hazelcast throwing exception in spring boot application with vaadin 8 using openfeignHazelcast 在使用 openfeign 的 vaadin 8 的 Spring Boot 应用程序中抛出异常
【发布时间】:2019-04-04 13:05:07
【问题描述】:

我们有一个带有 Vaadin 8、Spring Boot 2.1.3 和 Open Feign 的 Web 应用程序。

现在应该集成 Hazelcast 以进行会话复制。 我在关注这个article。

问题:在使用 Open Feign 时,InvocationHandler:NotSerializableException 中会引发异常,因此我实现了自己的 InvocationHandlerFactory,并设置了自己的 InvocationHandler,即实现了 Serializable 接口。

现在在InvocationHandler 中抛出了同样的异常:

com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'org.springframework.session.MapSession'**
    com.hazelcast.nio.serialization.HazelcastSerializationException: Failed to serialize 'org.springframework.session.MapSession'
Caused by: java.io.NotSerializableException: java.lang.reflect.Method

问题是:java.io.NotSerializableException: java.lang.reflect.Method

方法是最终的,所以它不能被序列化。

有没有办法告诉 Hazelcast 不要尝试序列化某些类? 有什么解决方法吗?

我已经尝试使用 ApplicationContext 来避免开放 feign 类的序列化,但这不可能,因为开放 feign 客户端需要在会话范围内。

【问题讨论】:

    标签: spring-boot session vaadin hazelcast


    【解决方案1】:

    您可能在 UI 组件中注入了 Feign 客户端,对吧?如果是这样,当我实现该示例时,我也遇到了同样的情况,我通过创建您可以在文章中看到的 Services 类来解决它。您可以调用 Services 类中的静态方法,而不是直接注入作为 Feign 客户端或引用它们的 bean。

    【讨论】:

    • 感谢您的快速答复。如果它会返回正确的 feign 客户端实例,我会尝试一下,因为我们的 rest 后端是无状态的,所以我们需要将 feign 客户端保持在会话范围内(可能不是最好的方法)。
    • 好。请与社区分享您的发现。我也对这个话题感兴趣。
    • 我在没有 feign 客户端的情况下尝试过,但遇到了类似的问题,例如这篇文章:stackoverflow.com/questions/55611815/…
    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2018-09-06
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多