問題タブ [jsr354]
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 - OSGI での Java マネー参照実装
ここにある Java money (JSR354) 参照実装を使用しています: http://javamoney.github.io/ri.html
ただし、OSGI環境で使用しています。これにより、次の例外が発生します。
Java money クラスを使用する場合、例外はスローされませんが、ログに記録されるだけです。すべてが機能しますが、この例外が常にログに表示され、私と同僚にとって非常に迷惑です。
ライブラリ内のこのクラスまで問題を追跡しました。
updateConfig() メソッドが例外をスローします。MonetaryConfig コンストラクターがログに記録します。この問題は、行が原因で発生します
同じファイルの 2 つの URL、つまり「bundleresource://7.fwk302155142/javamoney.properties」と「bundleresource://7.fwk302155142:3/javamoney.properties」を返します。
.JAR ファイルを確認したところ、プロパティ ファイルが 1 つしかなく、間違いなく 2 回読み取られています。
問題の本当の原因は、リソースのロード方法にあります。OSGI では、これはリソースをロードする方法ではありません (代わりにバンドルからリソースを取得する必要があります)。ただし、このライブラリがリソースをロードする方法を変更する方法がわかりません (ソースの変更と再コンパイルは別として、やりたくないことです)。
このライブラリをロードするときに、これを適切に機能させるために使用できる OSGI テクニックはありますか?
編集: 私のマニフェスト バンドル クラスパス
java - JavaMoney (JSR 354) で ExchangeRateProvider を作成するための推奨される方法は何ですか?
JavaMoney APIの新しいバージョン 1.0 を参照実装とともに使用し始めました。使用すべき特定の Exchangerates があるため、独自のExchangeRateProviderを実装する必要があります。org.javamoney.moneta.spi.AbstractRateProviderを拡張するクラス MyRateProvider を作成し、ファイル META-INF/services/javax.money.convert.ExchangeRateProvider に MyRateProvider-name を追加しました。これは機能しますが、org.javamoney.moneta 内の他のすべてのプロバイダーも、使用しない場合でもロードされます。それを回避する方法はありますか?
java - javamoney.properties のプロパティをオーバーライドしますか?
JavaMoney APIの新しいバージョン 1.0 を参照実装とともに使用して、javamoney.propertiesをオーバーライドすることにより、リソースローダーが他の ExchangeRateProvider をロードしないようにします。
ただし、ログには、それらがまだロードされていることが示されています。
LoaderService インターフェースから 'NEVER' はローカル リソース (リモートではなく) のロードをトリガーしますが、'LAZY' も試しました。
注目したのは、org.javamoney.moneta.internal.convert の ExchangeProviders のコンストラクターで、loader.loadDataAsync への呼び出しがあることです。
これは、DefaultLoaderServiceのメソッドregisterDataの「ONSTARTUP」の場合と同じです。
これが、javamoney.properties に何を入れても読み込まれる理由でしょうか?
他の ExchangeRateProvider を完全にオフにするにはどうすればよいですか? カスタムExchangeRateProviderのみを使用したい。
java-money - JSR-354 ExchangeRates を使用すると、アプリケーションが終了しない
アプリケーションで JavaMoney 1.0 を使用しようとしていますが、デフォルトExchangeRateProvider
の s を使用すると、アプリケーションの終了時に一部のスレッドがまだ実行されていることに気付きました。
既定では、指定された s が定期的にフェッチ レートを取得するように構成されていることは承知していExchangeRateProvider
ますが、どこかでデッドロックが発生しているか、スレッドがデーモンとしてマークされていないようです。
ExchangeRateProvider
または、私が気付いていない sをシャットダウンする方法があるかもしれません。
java - javax.money.CurrencyUnit がシリアライズ可能でないのはなぜですか?
javax.money.CurrencyUnit
から拡張しないのはなぜjava.io.Serializable
ですか? そのすべてのサブタイプは を実装しjava.io.Serializable
、さらに、休止状態のマッピングでそれを使用したい場合は、次の理由により、findbugs が (非常に正しく) 停止します。
JDKCurrencyAdapter
これは、休止状態のマッピングでクラスを使用する必要があることを意味しますか? インターフェイスを使用したいのですが、それが不可能な場合は、クラスを使用します。
java - javax.money.CurrencyUnit の表示名を取得する
のインスタンスがjavax.money.CurrencyUnit
あり、特定のロケールでの名前を表示したい (たとえば、「米ドル」、「ユーロ」、「日本円」など)。私はすべてのドキュメントを読みましたが、見つけることができた唯一のことは、フォーマットする方法ですMonetaryAmount
:
そして、指定したことがわかりますCurrencyStyle.NAME
ので、結果に通貨名が返されますが、問題は がMonetaryAmount
なく、 のフォーマッタが見つからなかったことですCurrencyUnit
。
ありがとうございました