public static UserAgentStringParser getCachingAndUpdatingParser(final URL dataUrl, final URL versionUrl, final URL fallbackDataURL, final URL fallbackVersionURL) {
		return CachingAndUpdatingParserHolder.getParser(dataUrl, versionUrl, getCustomFallbackXmlDataStore(fallbackDataURL, fallbackVersionURL));
	}
public static UserAgentStringParser getCachingAndUpdatingParser ( final URL dataUrl , final URL versionUrl , final URL fallbackDataURL , final URL fallbackVersionURL ) { return CachingAndUpdatingParserHolder . getParser ( dataUrl , versionUrl , getCustomFallbackXmlDataStore ( fallbackDataURL , fallbackVersionURL ) ) ; }
Returns an implementation of {@link UserAgentStringParser} which checks at regular intervals for new versions of
<em>UAS data</em> (also known as database). When newer data available, it automatically loads and updates it.
Additionally the loaded data are stored in a cache file.

<p>
At initialization time the returned parser will be loaded with the <em>UAS data</em> of the cache file. If the
cache file doesn't exist or is empty the data of this module will be loaded. The initialization is started only
when this method is called the first time.

<p>
The update of the data store runs as background task. With this feature we try to reduce the initialization time
of this <code>UserAgentStringParser</code>, because a network connection is involved and the remote system can be
not available or slow.

<p>
The static class definition {@code CachingAndUpdatingParserHolder} within this factory class is <em>not</em>
initialized until the JVM determines that {@code CachingAndUpdatingParserHolder} must be executed. The static
class {@code CachingAndUpdatingParserHolder} is only executed when the static method
{@code getOnlineUserAgentStringParser} is invoked on the class {@code UADetectorServiceFactory}, and the first
time this happens the JVM will load and initialize the {@code CachingAndUpdatingParserHolder} class.

<p>
If during the operation the Internet connection gets lost, then this instance continues to work properly (and
under correct log level settings you will get an corresponding log messages).

@param dataUrl
@param versionUrl
@param fallbackDataURL
@param fallbackVersionURL
@return an user agent string parser with updating service