Java JCabi aspects@RetryOnFailure如何引发异常
我想通过使用JCabi手动调用方法重试。面向方面编程应该使这变得容易,但我无法理解Java JCabi aspects@RetryOnFailure如何引发异常,java,aop,jcabi,Java,Aop,Jcabi,我想通过使用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+
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);
}
}
发生异常时,该方法将重试两次,每次重试时间为10毫秒
尝试之间的延迟
很遗憾,我发现这些jcabi方面需要一个自定义pom.xml任务来编译项目中所需的方面
因此,在NetBeans中删除jcabi jar并编译上述代码是不够的。事实上,仅仅使用jcabi注释是不够的。你应该“编织”你的源代码或二进制文件。我建议编织二进制文件,如下所述:。将此插件添加到您的
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>
com.jcabi
jcabi-maven插件
0.8
ajc
对于那些仍在寻找答案的人来说,耶戈尔的答案现在已经过时了。他发布的jcabi maven插件版本0.8
不适合我
经过几个小时的挖掘,我发现其中规定我们应该使用截至2014年7月的最后一个版本0.9.2
这就是为什么在运行mvn jcabi:ajc时,我从链接和编织中得到了错误的答案。其他选择,您可以将这些配置添加到pom.xml中,以便在编译时编织
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<complianceLevel>1.6</complianceLevel>
<encoding>${project.build.sourceEncoding}</encoding>
<showWeaveInfo>true</showWeaveInfo>
<source>1.7</source>
<target>1.7</target>
<verbose>true</verbose>
<aspectLibraries>
<aspectLibrary>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<id>weave-classes</id>
<phase>process-classes</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
org.codehaus.mojo
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<configuration>
<complianceLevel>1.6</complianceLevel>
<encoding>${project.build.sourceEncoding}</encoding>
<showWeaveInfo>true</showWeaveInfo>
<source>1.7</source>
<target>1.7</target>
<verbose>true</verbose>
<aspectLibraries>
<aspectLibrary>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
<executions>
<execution>
<id>weave-classes</id>
<phase>process-classes</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>