我有一个简单的Dropwizard应用程序,我想在其中使用javanica的HystrixCommand注释。 这是代码:
HelloWorldResource.java
package sample;
import com.codahale.metrics.annotation.Timed;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.Optional;
@Path("/hello-world")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
private final String template;
private final String defaultName;
public HelloWorldResource(String template, String defaultName) {
this.template = template;
this.defaultName = defaultName;
}
@GET
@Timed
public String sayHello(@QueryParam("name") Optional<String> name) throws Exception {
AnotherUser user = new AnotherUser();
return user.getName();
}
}
AnotherUser.java
package sample;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
public class AnotherUser{
private String name;
public AnotherUser() {
}
@HystrixCommand(commandKey = "someKey", fallbackMethod = "getTest")
public String getName() {
return "something";
}
public String getTest() {
return "Test";
}
public void setName(String name) {
this.name = name;
}
}
但是,每当我访问服务器的/hello-world
API时,getName
中的AnotherUser.java
函数就会在dw-main线程上运行(使用IntelliJ的调试器进行检查)。
我无法找到解决问题的确切方法。我浏览了很多文章,但是大多数文章都使用Spring作为框架,我无法理解它的AOP方面。
请查明确切的错误和解决方法。