Java Microprofile@Fallback在本机映像模式下不工作
在Quarkus上运行以下代码:Java Microprofile@Fallback在本机映像模式下不工作,java,quarkus,microprofile,graalvm-native-image,smallrye,Java,Quarkus,Microprofile,Graalvm Native Image,Smallrye,在Quarkus上运行以下代码: @Singleton @RegisterForReflection public class StoreService { private static final Logger LOGGER = Logger.getLogger(StoreService.class); @Inject @RestClient StoresApiClient client; @CacheResult(cacheName = "sto
@Singleton
@RegisterForReflection
public class StoreService {
private static final Logger LOGGER = Logger.getLogger(StoreService.class);
@Inject
@RestClient
StoresApiClient client;
@CacheResult(cacheName = "stores")
@Fallback(fallbackMethod = "allFallbackStores")
public List<Store> allStores() {
// call REST API using client
}
@SuppressWarnings("unused")
public List<Store> allFallbackStores() {
try {
LOGGER.info("Falling back to internal stores list");
...
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
@Singleton
@寄存器反射
公共类存储服务{
私有静态最终记录器=Logger.getLogger(StoreService.class);
@注入
@RestClient
StoresAPI客户机;
@CacheResult(cacheName=“stores”)
@回退(fallbackMethod=“allFallbackStores”)
公共列表所有商店(){
//使用客户端调用RESTAPI
}
@抑制警告(“未使用”)
公共列表所有FallbackStores(){
试一试{
LOGGER.info(“返回内部存储列表”);
...
}捕获(IOE异常){
抛出新的运行时异常(e);
}
}
}
回退机制在常规JDK模式下正常工作。另一方面,在本机映像模式下,
@Fallback
注释不受重视,并且在API调用失败后引发异常。如果有@RegisterForReflection
注释,原因可能是什么?您好,您能告诉我们在本机模式下发生的异常吗?没有与@Fallback
本身相关的异常。如果allStores
调用在任何异常情况下结束,则流不会重定向到allFallbackStores
方法(在常规JDK模式下,它工作正常,并且执行了allFallbackStores
)OK,这似乎是一个错误,您能在Quarkus Github repo中打开问题吗?理想情况下使用复制机?我无法使用Quarkus 1.2.1.Final
复制问题,可能此版本中已经修复了该问题。谢谢你的时间@loicmathieu