为了简化我们的web服务,我想使用版本2.34中的Jersey框架引入一个自定义的MyObj类,并希望通过@Context注释注入创建的实例。
我有两个问题:
工作HK2工厂示例:
public class MyObjHK {}
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
public class BinderHK
extends AbstractBinder {
@Override protected void configure() {
bindFactory(MyObjFactoryHK.class).to(MyObjHK.class).in(RequestScoped.class);
}
}
import org.glassfish.hk2.api.Factory;
public class MyObjFactoryHK
implements Factory<MyObjHK> {
@Override public MyObjHK provide() {return new MyObjHK();} // ok
@Override public void dispose(MyObjHK instance) {};
}
public class API_HK2 {
@GET
public static Response myobjhk(@Context MyObjHK obj) {
System.out.println("called hk, obj="+obj); // ok
return Response.ok().build();
}
}
不工作供应商示例:
public class MyObj {}
import org.glassfish.jersey.internal.inject.AbstractBinder;
import org.glassfish.jersey.process.internal.RequestScoped;
public class Binder
extends AbstractBinder {
@Override protected void configure() { // not called ???
bindFactory(MyObjFactory.class).to(MyObj.class).in(RequestScoped.class);
}
}
import java.util.function.Supplier;
public class MyObjFactory
implements Supplier<MyObj> {
@Override public MyObj get() {return new MyObj();}
}
public class API {
@GET
public static Response myobj(@Context MyObj obj) {
System.out.println("called, obj="+obj); // null ???
return Response.ok().build();
}
}
绑定器不能用jersey.config.classnames
init-param注册。您需要用resourceConfig
或Feature
注册它(并用init-param注册该特性)
@Provider
public class MyFeature implements Feature {
@Override
pubic boolean configure(FeatureContext ctx) {
ctx.register(new MyBinder());
return true;
}
}
问题内容: 现在我使用的球衣,我想注入映射到资源类方面,它接受所有,和格式的提交。 我遵循Jersey文档中指定的说明: https://jersey.github.io/documentation/latest/ioc.html#d0e17033 GeneralForm.java GeneralFormFactory.java 然后将那个Factory注册到我的ResouceConfig中: 但
我对这项服务、供应商和工厂有点困惑。AngularJS模块的服务、提供者和工厂之间有什么区别?请讲述并举例说明
我正在尝试理解HK2工厂在泽西应用程序中的实现。 null 每个请求都会创建MyFactory的两个对象 单例工厂,我的理解是,工厂(MyFactory)的一个单一对象,它在注入时提供某种对象。 所以(1)应该工作还是我遗漏了什么? 当位置在下方时,位置在上方的NPE 在以下位置时,在上面位置无NPE
问题内容: 我有一个下面的SQL表: 我正在使用另一个表来存储值,例如: 要将值插入这些表中,我正在使用存储过程(其中一部分): 动态执行将引发一个异常,即不允许隐式转换sql_variant。有什么方法可以将sql_variant类型转换为varchar提供的类型?如: 其中@valueType是varchar而不是datetype 问题答案: 是的,您可以将参数作为传递给,但是您需要使用“转换
问题内容: 我有curl命令: 我想在Java API中创建HTTP请求,该操作将执行相同的操作。可以在本README中找到该curl命令。它用于开始在RabbitMQ上记录日志。回应并不重要。 现在,我创建了这样的内容(我删除了不太重要的行,例如捕获了异常等),但是不幸的是,它不起作用: 完整代码 问题答案: 这是最终的解决方案: