関連するコード、私のオープンソースプロジェクトを参照してください。
https://github.com/qianxingchuan/doraemonを
簡単な紹介
2017年、このようなシステムに直接アクセスコードの新人にアカウントの認証の一環として、高速、フィットのみアリババ技術スタックシステムを、達成するために、私は、アスガルドと呼ばれるクラウドゲートウェイの物流部門で新人を作りましたゲートウェイを硬化、直接硬化一般化コードに別の例コールサービス部は、ゲートウェイHSFを呼び出します。これらは、アスガルドの拡張性と柔軟性のための方法は、計り知れない制限を引き起こしているコードを硬化させます。
新人から出発した後、2019年5月に、in vivoで、クラウドストレージ関連のプロジェクトについて、特に生体内のインフラをやっていることは完璧ではないので、作業の重複の多くは、このようなほぼすべてのWebアプリケーションとして、そこにあるが、正確に認証アプリの同じセットを書き込まれます共通CORSの、Web認証、および設定。これは私の非常に不幸なので、私は、生体内でアスガルドに再びそれを書き換えることを決めた、この書き換えは、物流新人期間を向上させるクラウドは各コールのステージのためにこのような高度なカスタマイズなどいくつかのことを、実行する時間ではありません前に、別の例ゲートウェイがなければなりませんその上で、応答性の完全非同期、およびサポートのWebSocketをサポートしています。
それは高度にカスタマイズを実現したい場合、我々はあまりにも重い非常にプラグイン可能な、OSGiのを処理するためのプラグインフレームワークを持っている必要があり、私は、我々のアプリケーションは、あまりにも多くの依存関係と公開された仕様を持っていたくない、オープンソースのソファのアリゴールドのドレスセット-ark、だけでなく、私の要求を満たすために、私にとって、それが十分に軽量だった、実際には、限り、私はそれぞれのプラグインに依存しないことができるよう、図1に示したゲートウェイアプリケーション、内側にあることができます。
ドラえもん:この記事では、軽量なフレームを実装するJavaクラス・ローダーの独立モジュールに基づいて、私に焦点を当てています。
内部同じJVMでは、我々のアプリケーションは、バンドルがお互いに表示されていない、例のうち、輸出の束のいずれかを呼び出すことができます。
ドラえもんクイック
認証インターフェースの異なる実装に基づきます
ドラえもんサンプルのサンプルプロジェクトを参照してください。
主なプロジェクト:
サンプル-AUTH-ファサード:認証インターフェース定義
サンプルのauth-bundle1:1認証インターフェイスベース達成するための
2ベースの認証インタフェースの実現:サンプルのauth-bundle2
サンプルのauth-プロジェクト:ランニングbundle1とbundle2をメインプログラム
実現のバンドル
- それはあなたのコードの骨格を構築するためのドラえもん・プロジェクト原型をベースとすることができます
-
図2に示す発生ドラえもん束ディレクトリ構造
キー依存バンドルのpom.xmlは次のとおりです。
...
<dependencies>
<!--业务的基本依赖 -->
<dependency>
<groupId>io.github.qianxingchuan.framework</groupId>
<artifactId>sample-auth-facade</artifactId>
</dependency>
<!--每个bundle的依赖,每个bundle 必须要有一个 io.github.qianxingchuan.framework.doraemon.BundleService实例 -->
<dependency>
<groupId>io.github.qianxingchuan.framework</groupId>
<artifactId>doraemon-facade</artifactId>
<version>0.1-RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.4.RELEASE</version>
</dependency>
</dependencies>
...
</project>
バンドル内に実装、フレームは、各バンドルのドラえもん走行時間が互いに分離されているため、限定されるものではなく、各バンドルはio.github.qianxingchuan.framework.doraemon.BundleServiceを実装するクラスを有していなければならない、とバンドルするように構成されました.propertiesファイル
次のようにbundle.properties構成は次のとおりです。
init-class=io.github.qianxingchuan.doraemon.sample.auth.run.SampleBundleRun
skip-class=io.github.qianxingchuan.doraemon.sample.facade.AuthFacade
バンドルが自動的に内部で行われていることを意味INIT-クラスのdoIt初期
スキップクラスは、クラスがクラスローダバンドルによってロードされていることを意味するものではありません
そこで、図1の私たちの表現によると、この構成では、クラスローダがロードするアプリケーションによってbundle1 SampleBundleRunモジュールクラスローダ、AuthFacadeによってロードされます。
MVNクリーンコンパイルパッケージによって書かれたすべてのコードの後、ファイルの束を生成するために、.zipファイル。
バンドルランニング
リファレンスサンプルのauth-プロジェクトエンジニアリング