在调用某些 Rest 服务时,我收到 HK2 reification failed 错误。最近我将我的应用程序从 JDK 8 迁移到 Open jdk 12。
我将 AbstractBinder 包从 org.glassfish.hk2.utilities.binding.AbstractBinder 替换为 org.glassfish.jersey.internal.inject.AbstractBinder。此外,我使用的自定义绑定工厂类之前实现了 org.glassfish.hk2.api.Factory,但现在我对其进行了修改以实现 java.util.function.Supplier。这给了我提到的错误。请看一下代码:
import org.glassfish.jersey.internal.inject.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
public class AppBinder extends AbstractBinder
{
@Override
protected void configure() {
bindFactory(CustomFactory.class).to(Search.class).in(RequestScoped.class);
}
}
import org.glassfish.hk2.api.ServiceLocator;
import java.util.function.Supplier;
import javax.ws.rs.core.UriInfo;
public class CustomFactory implements Supplier<Search>
{
@Inject
private ServiceLocator serviceLocator;
public CustomFactory() {
}
@Override
public Search get() {
return this.getSearch(serviceLocator.getAllServices(UriInfo.class).get(0).getQueryParameters());
}
}
自定义绑定工厂用于其他一些操作,例如关闭连接等。我是否以正确的方式进行操作,或者我应该使用不同的方法来定义我的自定义工厂并在 AppBinder 类中使用它。