长话短说:我有一个Future对象的集合.其中一些已经在进行中,有些则没有.我迭代收集并调用future.cancel(false),根据文档,应该取消所有Future当前没有运行但应该允许所有其他人完成的.
我的问题是:Future在我打电话后,我怎么知道特定的什么时候完成future.cancel(false)?future.isDone()总是返回,true因为cancel()在此之前确实被调用,并且即使仍在运行,也future.get()总是抛出一个.CancellationExceptionFuture
有什么建议?
我正在尝试学习如何使用Apache Commons VFS2.
我已经阅读了所有可以找到的文档,而且我已经熟悉了API,但仍然有一件事对我来说并不是很清楚.
Cache机制如何工作?特别是:
我没有区分缓存策略和FilesCache接口.哪个用的?
在这里的文档中说:http://wiki.apache.org/commons/VfsCacheStrategy ...有3种可能的缓存策略,每种都有详细解释.我得到了"最简单"的on_call策略,但其他两个我没有.例如 - 如果我们选择MANUAL策略,则说" 你必须使用fileObject.refresh()来刷新文件系统对象 ".但究竟是什么意思呢?这是否意味着如果我将字节写入此FileObject的FileContents,它们实际上不会被写入,直到我关闭文件对象或调用刷新?如果我有2个从同一URI解析的FileObjects并且我删除()第一个?由于缓存了文件对象,第二个的exists()方法是否仍会返回true?
当我尝试在我的机器上本地使用不同的缓存策略时,我并没有发现行为上的任何差异.它们的行为都相同,并且文件始终与FS同步(或者至少它们不是很明显).
在这里寻找Java网络专家:)
我所属的团队正在开发一种解决方案,其中包括服务器部分和小型客户端API(和api-impl)捆绑包,我们的客户必须部署和使用该捆绑包才能向服务器部分发出http请求。
使用该API的一位客户要求我们向他提供一种用于设置自定义Socket实现的新方法,以便与服务器部分进行的实际http通信可以通过其Socket进行。到目前为止,我们使用HttpsUrlConnection连接到服务器部分。问题是-是否可以通过某种方式为HttpsUrlConnection提供自定义套接字实现而不是默认实现?有哪些选择?Apache HttpClient能够做到这一点吗?
java sockets networking httpurlconnection apache-httpclient-4.x
假设我有这样的xml:
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY id="123">USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
</CATALOG>
Run Code Online (Sandbox Code Playgroud)
签字后我得到:
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY id="123">USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
<ds:DigestValue>C6i9GSNZ8seoXxfuFc482Q==</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
d/ufAnYK35PKUdi+O6DUytV+36OGAr5meHXq2qoOUp+zO1Q5HbJvIs01qlPT9oKiBEi2QiAF3Sya
ZVwi4hEI9xHkLiewmOxPo1KgVfJ1Ir2RPpkdegFYFx9QCMR4Z1M7zTkijCKv9ncWR4MYjOAfDrKf
fbvUX3AbRHlUYJj6M4QcrQUuBPhSqo4TcxtfblNqmKUT+141+sLSsuM2xy24YeyF7NUff9tirCiP
KgBHpFGtiJAdxugAlzqHaR9CP2kRA2Sg046NBo2yO/nTDfUKqquZm4aaZsLWbvKJYvrgqD4YgH4M
FFpK5ChgYa4oi7f9BAYxOFcY9f1OCHsvpdCbpw== …Run Code Online (Sandbox Code Playgroud) 我有以下aspectJ切入点:
@Around(value="execution(* *(*,Map<String, Object>)) && @annotation(com.xxx.annotations.MyCustomAnnotation)")
Run Code Online (Sandbox Code Playgroud)
如您所见,此切入点仅匹配使用 com.xxx.annotations.MyCustomAnnotation 注释的方法,该方法有 2 个参数 - 第一个是任意的,第二个必须是类型Map<String, Object>。
如果找到使用 com.xxx.annotations.MyCustomAnnotation 注释但与签名不匹配的方法,是否可以配置 aspectj-maven-plugin 以强制编译错误* *(*,Map<String, Object>)?
或者换句话说,:
@com.xxx.annotations.MyCustomAnnotation
public void test(String s, Map<String, String> m) {
...
}
Run Code Online (Sandbox Code Playgroud)
-> 我希望这会产生编译时错误,因为Map<String, String>!=Map<String, Object>