このトピックでは、Ali-Tomcatを使用して、高速サービスフレームワーク (HSF) からApache Dubbo (Dubbo) フレームワークにアプリケーションを移行する方法について説明します。
移行ソリューション
移行の最終目標は、HSFとEnterprise Distributed Application Service (EDAS) のレジストリからDubboとNacosレジストリにアプリケーションを移行することです。 2つのソリューションが利用可能です。
2ステップ移行
HSFとEDAS のレジストリからDubboとEDAS のレジストリに移行します。
EDAS のレジストリからNacosレジストリに移行します。
このソリューションは高い安定性を特徴とし、小ステップ反復に適しています。 ただし、アプリケーションは2回公開する必要があります。
直接移行
HSFとEDAS のレジストリからDubboとNacosレジストリに移行します。
HSFはNacosをサポートしていません。 追加の開発が必要です。
アプリケーションをすばやくDubboに移行してリリースする場合は、安定性を考慮して最初のソリューションを使用することをお勧めします。 次のセクションでは、2段階の移行を実行する方法について説明します。
移行アーキテクチャ
Dubboサービスは、HSFサービスのコンシューマーがDubboサービスを確実に発見できるように、HSFとDubboの両方の形式で登録されています。 Dubboサービスコンシューマは、HSFおよびDubboフォーマットのデータをサブスクライブして、DubboサービスコンシューマがHSFサービスを確実に発見するようにする。
前提条件
移行に必要な次のコンポーネントがデプロイされます。
EDAS-コンテナV3.5.5
edas-dubbo-拡张子2.0.6
HSFサービスとDubboサービスの両方が、edas-demo-interfaceという名前の同じインターフェイスから継承すると仮定します。 インターフェイスには、次のディレクトリ構造を持つインターフェイス宣言が1つだけ含まれます。
├── pom.xml
├── src
│ └── main
│ └── java
│ └── com
│ └── alibaba
│ └── edas
│ └── DemoService.javaサービスプロバイダーの移行
次のファイルを含むHSFアプリケーションedas-hsf-demo-provider-warを移行するとします。
pom.xmlは、アプリケーションのモジュール間の依存関係の設定ファイルです。DemoServiceImpl.javaは、DemoServiceの実装です。hsf-provider-beans.xmlは、HSFのSpring bean宣言ファイルです。web.xmlは、WARパッケージのデプロイに使用される記述子です。
次の情報は、edas-hsf-demo-provider-warディレクトリの構造を示しています。
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── alibaba
│ │ │ └── edas
│ │ │ └── hsf
│ │ │ └── provider
│ │ │ └── DemoServiceImpl.java
│ │ ├── resources
│ │ │ └── hsf-provider-beans.xml
│ │ └── webapp
│ │ └── WEB-INF
│ │ └── web.xmlDubboの依存関係をpom.xmlに追加します。
HSFサービスにはSpring 4.x以降を使用することを推奨します。
HSFクライアントの依存関係を削除します。
<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-sdk</artifactId> <version>1.5.4</version> </dependency>Dubboの依存関係を追加します。
edas-dubbo-extensionは、EDAS のレジストリにDubboサービスを登録し、HSF形式でDubboサービスを登録してサブスクライブするために使用されます。 完全なpom.xmlファイルの詳細については、サンプルコードをご参照ください。dubboは標準のDubbo依存関係です。
<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-dubbo-extension</artifactId> <version>2.0.5</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency>
hsf-provider-beans.xmlをdubbo-provider-beans.xmlに変更します。
hsf-provider-beans.xmlファイルの設定を次に示します。
<? xml version="1.0" encoding="UTF-8"? > <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hsf="http://www.taobao.com/hsf" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.taobao.com/hsf http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName"> <bean id="itemService" class="com.alibaba.edas.hsf.provider.DemoServiceImpl" /> <! -- Example of providing a service --> <hsf:provider id="demoService" interface="com.alibaba.edas.DemoService" ref="itemService" version="1.0.0"> </hsf:provider> </beans>dubbo-provider-beans.xmlに変更する必要があります。<? xml version="1.0" encoding="UTF-8"? > <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="edas-dubbo-demo-provider"/> <dubbo:registry id="edas" address="edas://127.0.0.1:8080"> <! -- This means Dubbo services will be registered as HSF format, so that hsf consumer can discover it. --> <dubbo:parameter key="hsf.enable" value="true"/> </dubbo:registry> <bean id="demoService" class="com.alibaba.edas.dubbo.provider.DemoServiceImpl"/> <dubbo:service interface="com.alibaba.edas.DemoService" ref="demoService" group="HSF" version="1.0.0"/> </beans>説明Dubboレジストリのアドレスは、
edas:// 127.0.0.1:8080に設定する必要があります。 edasで始める必要があります。 IPアドレスとポート番号は変更できません。展開中に、EDAS によってオンラインサービスのIPアドレスとポート番号が自動的に置き換えられます。<dubbo:parameter key="hsf.enable" value="true"/>を追加する必要があります。これは、HSFクライアントがサービスを確実に検出するために、DubboサービスがHSF形式とDubbo形式の両方で登録されていることを意味します。<dubbo:service>ラベルのグループとバージョンを指定する必要があります。 デフォルトグループはHSFで、デフォルトバージョンは1.0.0です。 それ以外の場合、HSFクライアントを呼び出すことはできません。
web.xmlファイルで、hsf-provider-beans.xmlをdubbo-provider-beans.xmlに置き換えます。
hsf-provider-beans.xmlをdubbo-provider-beans.xmlに置き換えるだけです。<! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc. //DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:dubbo-provider-beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>ローカル環境で結果を確認します。
ローカル環境での検証には、サービスを登録できるかどうかの検証と、サービスコンシューマがサービスを呼び出すことができるかどうかの検証が含まれます。
サービスを登録できるかどうかを確認します。
HSFアプリケーションをローカルレジストリに登録するには、hostsファイルに次のエントリ (/etc/hostsなど) を追加します。
127.0.0.1 jmenv.tbsite.netダウンロードします。軽量構成レジストリパッケージを解凍し、binディレクトリに移動して、
. /startup.shコマンドを実行して、軽量構成レジストリを起動します。mvn clean packageコマンドを実行して、edas-hsf-demo-provider-warをWARパッケージにコンパイルします。コンパイル後、ファイルはターゲットディレクトリに保存されます。
edas-hsf-demo-provider.warをAli-Tomcatに、edas-dubbo-demo-provider.warをApache Tomcatにデプロイします。
説明2つのTomcatプログラムを起動するために使用されるポートは、互いに競合する可能性があります。 この場合、Tomcatのconf/server.xmlファイルでポート8005と8080を検索し、競合しないポートに変更します。
http:// 127.0.0.1:8080/#/serviceManagementで軽量構成レジストリにアクセスし、com.alibaba.edas.DemoService:1.0.0サービスを表示します。
サービスが登録されており、2つのインスタンスがある場合、DubboサービスとHSFサービスはHSF形式で同じサービスとして登録されます。
サービスコンシューマがサービスを呼び出すことができるかどうかを確認します。
次の手順を実行して、移行したサービスプロバイダーをコンシューマーが呼び出すことができるかどうかを確認します。
edas-HSF-demo-consumer-warなど、テスト用のhsfサービスコンシューマを次のディレクトリ構造で準備します。
├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── alibaba │ │ │ └── edas │ │ │ └── hsf │ │ │ └── consumer │ │ │ └── IndexServlet.java │ │ ├── resources │ │ │ └── hsf-consumer-beans.xml │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xmlコンシューマは、コンシューマがHTTP要求を受信した後にHSFサービスコールを開始するために使用されるサーブレットを提供する。
public class IndexServlet extends HttpServlet { private DemoService demoService; @Override public void init() { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); this.demoService = (DemoService) wac.getBean("demoService"); } @Override public void doGet( HttpServletRequest req, HttpServletResponse resp ) { String result = demoService.sayHello("hsf"); System.out.println("Received: " + result); } }mvn clean packageコマンドを実行して、edas-hsf-demo-consumer-warをedas-hsf-demo-consumer.warにコンパイルし、edas-hsf-demo-consumer.warを別のAli-Tomcatコンテナにデプロイします。 ポートが競合しないようにしてください。軽量構成レジストリコンソールにログインします。
通常、HSFサービスのコンシューマーデータはコンソールに表示されません。
Ali-Tomcatが起動したら、次のURLに移動します。
curl http:// localhost:8280/edas-hsf-demo-consumer/index.htmedas-hsf-demo-consumer.warのAli-Tomcatコンテナの標準出力を確認します。
出力が次の情報に似ている場合、HSFクライアントはDubboサービスとHSFサービスの両方を呼び出しています。
受信した
Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello hsf, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385 Received: Hello hsf, response from hsf provider: /192.168.XX.XX:62385
サービスコンシューマの移行
edas-hsf-demo-consumer-warに基づいて、サービスコンシューマーをedas-dubbo-demo-consumer-warに移行します。
Dubboの依存関係をpom.xmlに追加します。
サービス・コンシューマは、サービス・プロバイダと同じ方法で移行することができる。 主な操作には、dubboとdubbo-edas-extensionの依存関係の追加、edas-sdkの依存関係の削除が含まれます。 詳細については、「サービスプロバイダーの移行」セクションの「Dubbo依存関係をpom.xmlに追加する」をご参照ください。
変更hsf-comsumer-beans.xmlへdubbo-consumer-beans.xml.
hsf-consumer-beans.xmlファイルの構成を次に示します。
<? xml version="1.0" encoding="UTF-8"? > <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hsf="http://www.taobao.com/hsf" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.taobao.com/hsf http://www.taobao.com/hsf/hsf.xsd" default-autowire="byName"> <! -- Example of consuming a service --> <hsf:consumer id="demoService" interface="com.alibaba.edas.DemoService" version="1.0.0"> </hsf:consumer> </beans>ファイルをdubbo-consumer-beans.xmlに変更します。
<? xml version="1.0" encoding="UTF-8"? > <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <dubbo:application name="edas-dubbo-demo-consumer"/> <dubbo:registry id="edas" address="edas://127.0.0.1:8080"> <! -- This means Dubbo consumer will subscribe HSF services --> <dubbo:parameter key="hsf.enable" value="true"/> </dubbo:registry> <dubbo:reference id="demoService" interface="com.alibaba.edas.DemoService" group="HSF" version="1.0.0" check="false"/> </beans>説明Dubboレジストリのアドレスは
edas://で始まる必要があります。<dubbo:service>ラベルにgroupとversionを指定します。groupとversionがサービスプロバイダーと同じであることを確認します。 デフォルトのグループはHSFで、デフォルトのバージョンは1.0.0です。check="false"設定を追加します。これは、アプリケーションが起動しようとしたときに、サービスコンシューマアプリケーションがサービスプロバイダーのアドレスなしですぐに失敗することはないことを意味します。設定
<dubbo:parameter key="hsf.enable" value="true"/>を追加します。
web.xmlファイルで、hsf-consumer-beans.xmlをdubbo-comsumer-beans.xmlに置き換えます。
ローカル環境で結果を確認します。
ローカル環境での検証には、サービスが軽量構成レジストリに登録されているかどうかの検証と、HSFおよびDubboサービスを呼び出すことができるかどうかの検証が含まれます。
前述のプロジェクトをedas-dubbo-demo-consumer.warにパッケージ化し、Apache Tomcatにデプロイします。
重要ポートが競合しないようにしてください。
軽量構成レジストリコンソールにログインして、Dubboサービスコンシューマが登録されているかどうかを確認します。
登録されたコンシューマサービスがコンソールに表示された場合、サービスが登録されます。
http:// localhost:8280/edas-dubbo-demo-consumer/index.htmに移動:
curl http:// localhost:8280/edas-dubbo-demo-consumer/index.htmHSFクライアントのApache Tomcatの標準出力を確認します。
出力が次の情報に似ている場合、DubboサービスコンシューマはHSFおよびDubboサービスを消費しています。
受信した
Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from hsf provider: /192.168.XX.XX:12202 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880 Received: Hello dubbo, response from dubbo provider: 192.168.XX.XX:20880
EDAS にアプリケーションをデプロイし、結果を確認する
このトピックでは、Elastic Compute Service (ECS) クラスターでのデプロイを例として使用します。 EDASで、次の4つのアプリケーションを作成します。
edas-dubbo-demo-consumerは、移行後のサービスコンシューマアプリケーションです。 ランタイム環境はApache Tomcat 7.0.91です。
edas-dubbo-demo-providerは、移行後のサービスプロバイダーアプリケーションです。 ランタイム環境はApache Tomcat 7.0.91です。
edas-hsf-demo-consumerは、移行前のサービスコンシューマアプリケーションです。 ランタイム環境はEDAS-Container V3.5.4です。
edas-hsf-demo-providerは、移行前のサービスプロバイダーアプリケーションです。 ランタイム環境はEDAS-Container V3.5.4です。
4つのWARパッケージを4つのアプリケーションに個別にデプロイします。 詳細については、「EDASへのアプリケーションのデプロイ」「」をご参照ください。
次のコマンドを実行して、サービスコンシューマーedas-hsf-demo-consumerがHSFおよびDubboサービスプロバイダーを呼び出すことができるかどうかを確認します。
curl http:// 39.106.XX.XXX:8080/index.htmedas-hsf-demo-consumerアプリケーションのAli-Tomcatの標準出力でログを表示します。/home/admin/taobao-tomcat-production-7.0.XX.X/logs/catalina.out.
出力が次の情報に類似している場合、HSFサービスコンシューマはHSFサービスとDubboサービスを消費しています。
次のコマンドを実行して、edas-dubbo-demo-consumerがHSFおよびDubboサービスプロバイダーを呼び出すことができるかどうかを確認します。
curl http:// 192.168.XX.XX:8080/index.htmedas-dubbo-demo-consumerアプリケーションのApache Tomcatの標準出力のログを表示します。/home/admin/apache-tomcat-7.0.91/logs/catalina.out.
出力が次の情報に似ている場合、DubboサービスコンシューマはHSFおよびDubboサービスを消費しています。
よくある質問
Dubboサービスコンシューマーの起動後にサービスプロバイダーのアドレスが見つからないのはなぜですか?
問題の説明
java.lang.IllegalStateException: Failed to check the status of the service com.xxxx.xxxxx.service.xxxxxConfigService. No provider available for the service HSF/com.xxxxx.xxxxx.service.xxxxxxxxxxService:1.0.0 from the url edas://127.0.0.1:8080/org.apache.dubbo.registry.RegistryService? application=xxxx-flow-center-bj&dubbo=2.0.2&group=HSF&interface=com.xxxx.xxxxxx.service.xxxxxxxxxxService&lazy=false&methods=queryConfigs,getConfig,saveConfig&pid=11596®ister.ip=xxx.xx.xx.xxx&release=2.7.3&revision=1.0.1-SNAPSHOT&side=consumer&sticky=false&timeout=2000×tamp=1564242421194&version=1.0.0 to the consumer xxx.xx.xx.xxx use dubbo version 2.7.3を使用
考えられる原因
レジストリはサービスプロバイダーのアドレスを非同期にプッシュします。 デフォルトでは、起動時にサービスプロバイダーのアドレスが使用可能かどうかを確認します。 利用可能なアドレスがない場合、このエラーが発生します。
解決策
dubboの
<Dubbo: reference>ラベルに、次のcheck="false"設定を追加します。<dubbo:reference id="demoService" interface="com.alibaba.edas.DemoService" group="HSF" version="1.0.0" check="false"/>設定が追加された後、Dubboは起動中にサービスプロバイダーのアドレスが利用可能かどうかをチェックしません。 ただし、ビジネス初期化コードでDubboサービスを呼び出す必要がある場合、ビジネスは失敗する可能性があります。
HSFサービスのコンシューマーがDubboサービスを呼び出すときにエラーが発生するのはなぜですか?
問題の説明
2019-07-28 23:07:38.005 [WARN ] [cf67433d1e7a44412a518bd190100d176-node401] [NettyServerWorker-6-1] [o.a.d.r.exchange.codec.ExchangeCodec:91] | [DUBBO] Fail to encode response: Response [id=343493, version=HSF2.0, status=20, event=false, error=null, result=AppResponse [value=FlowControlDto(postWeightDtoHashMap={614215325=PostWeightDto(postId=614215325, weight=1.0, postSourceType=null)}), exception=null]], send bad_response info instead, cause: For input string: "", dubbo version: 2.7.3, current host: xxx.xx.xx.xxx java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:592) at java.lang.Integer.parseInt(Integer.java:615) at org.apache.dubbo.common.Version.parseInt(Version.java:133) at org.apache.dubbo.common.Version.getIntVersion(Version.java:118) at org.apache.dubbo.common.Version.isSupportResponseAttachment(Version.java:102) at org.apache.dubbo.rpc.protocol.dubbo.DubboCodec.encodeResponseData(DubboCodec.java:195) at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java:283) at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:71) at org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:40) at org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:70) ...考えられる原因
DubboがV2.7にアップグレードされた後、HSFはDubboと互換性がありません。
解決策
EDAS-コンテナをV3.5.5にアップグレードする。 この問題は、HSFのこのバージョンのEDAS-Containerで修正されています。
ダボサービスの消費者がHSFサービスプロバイダーに電話しないのはなぜですか?
問題の説明
java.lang.Exception: [HSF-Provider-192.168.0.46] Error log: [HSF-Provider] App [xxxxxxx-3b6f-42d3-xxxx-0ad2434xxxxx] failed to verify the caller signature [null] for [com.alibaba.edas.DemoService:1.0.0] [sayHello] from client [192.168.XX.XX] com.taobao.hsf.io.remoting.dubbo2.Dubbo2PacketFactory.serverCreate(Dubbo2PacketFactory.java:284) com.taobao.hsf.io.stream.AbstractServerStream.write(AbstractServerStream.java:25) com.taobao.hsf.io.RpcOutput.flush(RpcOutput.java:37) com.taobao.hsf.remoting.provider.ProviderProcessor$OutputCallback.operationComplete(ProviderProcessor.java:155) com.taobao.hsf.remoting.provider.ProviderProcessor$OutputCallback.operationComplete(ProviderProcessor.java:130) com.taobao.hsf.util.concurrent.AbstractListener.run(AbstractListener.java:18) com.taobao.hsf.invocation.AbstractContextAwareRPCCallback.access$001(AbstractContextAwareRPCCallback.java:12) com.taobao.hsf.invocation.AbstractContextAwareRPCCallback$1.run(AbstractContextAwareRPCCallback.java:27) com.taobao.hsf.util.concurrent.WrappedListener.run(WrappedListener.java:34) com.taobao.hsf.invocation.AbstractContextAwareRPCCallback.run(AbstractContextAwareRPCCallback.java:36) com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:456) com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:817) com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:595) com.taobao.hsf.util.concurrent.DefaultListenableFuture.addListener(DefaultListenableFuture.java:32) com.taobao.hsf.remoting.provider.ProviderProcessor.handleRequest(ProviderProcessor.java:55) com.taobao.hsf.io.remoting.dubbo2.message.Dubbo2ServerHandler$1.run(Dubbo2ServerHandler.java:65) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748)考えられる原因
HSFでは通話認証が有効になっていますが、Dubboはこの認証をサポートしていません。
解決策
-DneedAuth=falseをHSFサービスプロバイダーに追加して、通話認証を無効にします。ダボサービスの消費者がHSFサービスプロバイダーに電話しないのはなぜですか?
問題の説明
2019-08-02 17:17:15.187 [WARN ] [cf67433d1e7a44412a518bd190100d176-node401] [NettyClientWorker-4-1] [o.a.d.r.p.dubbo.DecodeableRpcResult:91] | [DUBBO] Decode rpc result failed: null, dubbo version: 2.7.3, current host: xxx.xx.xx.xxx java.lang.StackOverflowError: null at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:57) at sun.reflect.UnsafeByteFieldAccessorImpl.setByte(UnsafeByteFieldAccessorImpl.java:98) at java.lang.reflect.Field.setByte(Field.java:838) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer$ByteFieldDeserializer.deserialize(JavaDeserializer.java:452) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:276) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:203) at com.alibaba.com.xxxxxx.hessian.io.SerializerFactory.readObject(SerializerFactory.java:532) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2820) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2743) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2278) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2080) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2074) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize(JavaDeserializer.java:406) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:276) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer.readObject(JavaDeserializer.java:203) at com.alibaba.com.xxxxxx.hessian.io.SerializerFactory.readObject(SerializerFactory.java:532) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObjectInstance(Hessian2Input.java:2820) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2743) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2278) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2080) at com.alibaba.com.xxxxxx.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2074) at com.alibaba.com.xxxxxx.hessian.io.JavaDeserializer$ObjectFieldDeserializer.deserialize(JavaDeserializer.java:406) ...考えられる原因
HSFサービスは、JDK 8 LocalDateTimeのシリアル化をサポートしていない以前のHessian Liteバージョンを提供し、それに依存します。
解決策
EDAS-HSFサービスプロバイダのコンテナをV3.5.5にアップグレードする。