問題タブ [service-provider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 単純なJava「サービスプロバイダーフレームワーク」?
効果的なJavaの第2章で説明されているように、「サービスプロバイダーフレームワーク」を参照しString
ます。これは、実行時にいくつかのクラスの1つをインスタンス化する必要がある、問題を処理するための正確な方法のようです。サービス、およびConfiguration
オブジェクト(基本的にはXMLスニペット):
しかし、どうすれば個々のサービスプロバイダー(たとえば、多数のデフォルトプロバイダーといくつかのカスタムプロバイダー)に自分自身を登録させることができますか?
たとえば、カスタムクラスMyFooAlgorithmとMyFooAlgorithmProviderを記述してFooAlgorithmを実装し、それらをjarに配布する場合、registerProviderを自動的に呼び出す方法はありますか、またはアルゴリズムを使用するクライアントプログラムはFooAlgorithmRegistry.registerProvider( )使用したいクラスごとに?
clojure - ClojureでのSPIの定義
外部の「サービスプロバイダー」が実装できるClojureのインターフェースを定義する慣用的な方法を探しています。私のアプリケーションは、実行時にサービスプロバイダーモジュールを見つけてインスタンス化し、特定の責任をそれに委任します。
たとえば、RPCメカニズムを実装していて、構成時にカスタムミドルウェアを注入できるようにしたいとします。このミドルウェアは、メッセージの前処理、メッセージの破棄、メッセージハンドラーのロギングによるラップなどを行うことができます。
Javaリフレクションにフォールバックする場合、これを行う方法はいくつか知っていますが、Clojureに実装すると理解に役立つと思います。
(ここでは、一般的な意味でSPIを使用していることに注意してください。特に、JARファイル仕様で定義されている方法については言及していません) 。
ありがとう
visual-studio-2010 - Visual Studio 2010のサービスプロバイダーの決定的なリスト?
VS2010により、MEFのエクスポートとインポートを介して拡張機能を簡単に作成できるようになりました。ただし、何か便利なことをしたい場合は、superawesoem拡張機能を実装するために必要なサービスプロバイダーを知っておく必要があります。
残念ながら、この情報は多くの場合、十分に文書化されていないか、またはその両方で、至る所に散らばっています。
私が本当に見たいのは、VS拡張機能にインポートできるすべてのサービスプロバイダーの包括的なリストと、それらのプロバイダーが提供するものです。誰かがそのようなものを見たことがありますか?
java - 具象クラスで ServiceRegistry コンストラクターが ClassCastException で失敗する
javax.imageio.spi.ServiceRegistry
の要求プロセッサを動的に登録するために使用しようとしていますHttpServlet
:
私が得るエラーは次のとおりです。
クラスGetStandardCodesProcessor
は を実装しIRequestProcessor
ます。この呼び出しServiceRegistry.lookupProviders()
は、ファイルからクラスのリストを取得していますMETA-INF/services/org.confused.servlet.IRequestProcessor
。からイテレータを渡す方法についてのニュアンスが欠けているようですServiceRegistry.lookupProviders()
。
このページは、lookupProviders() からの戻り値を型指定されていない Iterator に代入し、それがServiceRegistry
コンストラクターに渡されるにもかかわらず、私が行っていることのほとんどを示しています。そのテクニックは私に同じエラーを与えます。
最後に、問題があれば、これを Eclipse Gallileo (ビルド 20100218-1602) で実行しています。
よろしく、 ドリュー
java - Java Service Provider API(jaxp)をだます方法
JAXP、具体的にはSAXParserFactoryを呼び出す必要のあるアプレットがあります。これで、Javadocからわかるように、これは、ここに記載されているサービスプロバイダーメカニズムを内部的に使用します。
具体的には、呼び出されたアプリケーションJARのいずれにもファイルが見つからない場合META-INF/services/javax.xml.parsers.SAXParserFactory
、アプリケーションコードベースからファイルをフェッチしようとします。アプレットを次のように展開した場合:
次に、 http://www.example.com/myapp/META-INF/services/javax.xml.parsers.SAXParserFactoryにHTTPリクエストを送信しようとします。
特に、アプレットが署名されていて、この追加のHTTP呼び出しが署名されていないコードに関する警告をトリガーするため、そうしないほうがいいです。
さて、明らかな解決策は、META-INF / servicesファイルをアプリケーションJARに配置することですが、それでもユーザーのJREのデフォルトのJAXP実装を使用するにはどうすればよいですか?または、アプレットランタイムを説得して、JARファイルのみcodebase
を検索し、そのファイルを検索しないようにする方法はありますか?
注:JAXP-RIの独自のコピーをデプロイすることもできることは知っていますが、それはアプレットとしてはかなり重いものです。
java - Mavenのサービスプロバイダーインターフェイスの単体テスト
最近、開発チームはプロジェクト管理とビルドサイクルのためにAntビルドファイルからMavenに移動しました。これまでのところ、私は結果に本当に満足しています。私はまだMavenを理解しているので、異常なビルド要件に対応する準備ができていません。
今、私は新しいプロジェクトを作成し、すぐに適切なMavenセットアップに取り掛かることに決めました。このプロジェクトは、実際にはJavaサービスプロバイダーインターフェイス(SPI)を使用してプラグイン可能な実装を検索するAPIです。実装は、通常のMETA-INF / services/ factorynameの方法で自分自身を登録できます。APIが作業の大部分を実行しますが、実際に役立つものを取得するには実装が必要です。
私の質問は今です:これのためのユニットテストを書くにはどうすればいいですか?2つの方法が思い浮かびました。
テストパッケージに簡単な実装を作成し、それをビルドしてから、単体テストに使用します。これは、Mavenプロジェクトのライフサイクルにうまく適合していないようです。
テスト実装を含む別のプロジェクトを作成します。これはSVNリポジトリ内の別のエントリを意味しますが、よりクリーンなアプローチのように感じます。プロジェクトは、メインAPIプロジェクトのテストサイクルでjarとしてビルドおよび使用できます。これは、メインプロジェクトのテストスコープを持つ依存関係アーティファクトとしてリストされる可能性があります。
どちらの場合も、根本的な問題があります...実装では、コンパイルするためにメインAPIが必要になります。結局のところ、APIの抽象ファクトリを実装するファクトリクラスが必要です。ただし、メインAPI、テストフェーズなどを適切に構築するには、テストの実装が必要になります。それは本当に循環依存の問題です。
Mavenでこれに対処するための良い方法は何ですか?Antでは、APIとそのテストの間に実装を構築するだけです。知っておくと役立つ場合は、SPIを少し悪用して、単一の実装ではなく、オブジェクトモデルのバンドルを見つけています。これはJAXPのようなものではなく、リソースを登録する方法のようなものです。
java - Java DNS サービス プロバイダーを変更する方法
私は高速な Web クローラーを構築しており、マルチスレッド DNS 解決が必要なので、dnsjavaというマルチスレッド DNS サービス プロバイダーを選びました。残念ながら、デフォルトの DNS サービス プロバイダーを置き換える方法がわかりません。
dnsjavaのREADMEファイルを調べましたが、手順が十分ではありません。
標準の Java DNS 機能の置き換え:
Java 1.4 から、サービス プロバイダを実行時にロードできるようになりました。dnsjava サービス プロバイダーをロードするには、上記の説明に従ってビルドし、システム プロパティを設定します。
sun.net.spi.nameservice.provider.1=dns,dnsjava
これにより、JVM は、DNS に提供される dnsjava サービスを最高の優先度で使用するように指示されます。
不明な点がいくつかあります。
- dnsjava.jar はどこに配置すればよいですか?
- システム プロパティはどこに設定する必要がありますか (プログラムまたは何らかの種類のファイル変更)。
Windows 7 マシンで実行していますが、システム プロパティを検索/変更するために何をする必要があるかわかりません... 助けて!?
更新:
わかりました:System.setProperty("sun.net.spi.nameservice.provider.1","dns,dnsjava");
testing - SSO用のSAMLバージョン2を公開しているサービスプロバイダーは?
SSO(シングルサインオン)のテストに使用できる、公開されているSAMLバージョン2 SP(サービスプロバイダー)があるかどうか疑問に思っています。
SalesforceとGoogleのアプリにはどちらもSSOソリューションがありますが、それらにアクセスするにはどうすればよいですか。また、これらのサービスの費用はいくらですか。
テスト目的で、別のシステムでOpenSSOを使用してサービスプロバイダーをセットアップできます。
java - EclipseでMETA-INF/servicesフォルダーを作成する
Javaで拡張可能なアプリを作成しようとしていますが、SPIを使用することにしました。私がフォローしているこのチュートリアルによると、私META-INF/services
は自分のjarファイルに特定のファイルを作成することになっていますが、その方法がわかりません。でjarを作成する方法は知っていますが、このフォルダーにフォルダーと特定のファイルMETA-INF
を作成する方法が見つかりません。services
(私はEclipseを使用しています)
ご協力いただきありがとうございます。
android - Androidでプログラムで着信SMSをブロック/ブロック解除するようにサービスプロバイダーに通知するにはどうすればよいですか?
着信SMSをブロックおよびブロック解除するようにサービスプロバイダーに通知したい。これをプログラムで行うことは可能ですか?