我希望使用JCabi手动调用对方法的重试。面向方面的编程应该会使这件事变得简单,但我无法理解。
import com.jcabi.aspects.RetryOnFailure;
public class Example
{
public int j;
@RetryOnFailure(attempts = 4, delay = 100, verbose = true)
public void retryFun() throws Exception
{
j++;
if(j<3)
throw new Exception();
else
return;
}
public static void main(String[] args) throws Exception
{
Example example = new Example();
System.out.println(example.j);
example.retryFun();
System.out.println(example.j);
}
}jcabi中唯一可用的示例是下面的示例,它没有说明如何抛出异常以强制重试调用:
用@RetryOnFailure注释注释您的方法,如果方法出现异常,它的执行将重复几次: 公共类资源{@RetryOnFailure(尝试= 2,延迟= 10,详细=假)公共字符串加载(Url url) {返回url.openConnection().getContent();}} 在出现异常时,该方法将重试两次,每次尝试延迟10毫秒。
发布于 2013-09-23 20:35:20
事实上,仅仅使用jcabi注释是不够的。你应该“编织”你的源代码或二进制文件。我建议编写二进制文件,如这里所解释的:http://aspects.jcabi.com/example-weaving.html。将这个插件添加到您的pom.xml中,您就完成了:
<plugin>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-maven-plugin</artifactId>
<version>0.8</version>
<executions>
<execution>
<goals>
<goal>ajc</goal>
</goals>
</execution>
</executions>
</plugin>发布于 2015-03-05 12:02:29
对于那些仍在寻找答案的人来说,耶戈的答案现在已经过时了。他发布的jcabi插件版本0.8并不适用于我。
经过几个小时的挖掘,我找到了这,它说我们应该使用最后一个版本,2014年7月是0.9.2。
这就是我为什么在运行mvn时得到的答案:ajc,我从链接中得到错误,并且织入不起作用。
发布于 2013-09-19 14:42:31
好的,不幸的是,我发现这些jcabi方面需要一个定制的pom.xml任务来编译项目中所需的方面。
因此,仅在NetBeans中删除jcabi jar并编译上述代码是不够的。
https://stackoverflow.com/questions/18896204
复制相似问题