Sử dụng phiên bản 1.0 mới JavaMoney API với reference implementation chúng tôi cố gắng ngăn trình tải tài nguyên tải xuống ExchangeRateProvider khác bằng cách ghi đè javamoney.properties.Thuộc tính ghi đè trong javamoney.properties?
{1}conversion.default-chain=MY-PROVIDER
# Turn off loading of the default Moneta ExchangeRateProviders.
{1}load.ECBCurrentRateProvider.type=NEVER
{1}load.ECBHistoric90RateProvider.type=NEVER
{1}load.ECBHistoricRateProvider.type=NEVER
{1}load.IMFRateProvider.type=NEVER
{1}load.AbstractECBRateProvider=NEVER
Tuy nhiên, nhật ký nói với tôi rằng họ vẫn đang được nạp:
jun 19, 2015 8:27:58 AM org.javamoney.moneta.internal.convert.AbstractECBRateProvider newDataLoaded
INFO: Loaded ECBCurrentRateProvider exchange rates for days:1
Từ giao diện LoaderService 'KHÔNG BAO GIỜ' gây nên tải các tài nguyên địa phương (và không điều khiển từ xa), nhưng tôi cũng đã đã thử 'LAZY'.
public interface LoaderService {
/**
* Platform RI: The update policy defines how and when the
* {@link LoaderService} tries to update the local cache with newest version of
* the registered data resources, accessing the configured remote
* {@link URI}s. By default no remote connections are done (
* {@link UpdatePolicy#NEVER}).
*
* @author Anatole Tresch
*/
public enum UpdatePolicy {
/**
* The resource will never be updated from remote, only the fallback URL
* will be evaluated.
*/
NEVER,
/**
* The resource will be loaded automatically from remote only once on
* startup.
*/
ONSTARTUP,
/**
* The resource will be loaded automatically from remote only once, when
* accessed the first time.
*/
LAZY,
/**
* The resource should be regularly reloaded based on a schedule.
*/
SCHEDULED
}
...
gì chúng tôi đã lưu ý là trong các nhà xây dựng của ExchangeProviders trong org.javamoney.moneta.internal.convert, có một cuộc gọi đến loader.loadDataAsync:
AbstractECBRateProvider(ProviderContext context) {
super(context);
saxParserFactory.setNamespaceAware(false);
saxParserFactory.setValidating(false);
LoaderService loader = Bootstrap.getService(LoaderService.class);
loader.addLoaderListener(this, getDataId());
loader.loadDataAsync(getDataId());
}
Đây là tương tự như đối với trường hợp 'ONSTARTUP' trong phương pháp registerData trong DefaultLoaderService:
switch (updatePolicy) {
case NEVER:
loadDataLocal(resourceId);
break;
case ONSTARTUP:
loadDataAsync(resourceId);
break;
case SCHEDULED:
addScheduledLoad(res);
break;
case LAZY:
default:
break;
}
này có thể là một lý do mà nó được nạp không có vấn đề gì tôi đặt trong javamoney.pr của tôi operties?
Làm cách nào để tắt hoàn toàn các ExchangeRateProviders khác? Chúng tôi chỉ muốn sử dụng tùy chỉnh ExchangeRateProvider của chúng tôi.
Cảm ơn bạn đã phản hồi! Tôi đã nộp một Jira: https://java.net/jira/browse/JAVAMONEY-131. – Truls