У меня есть инъекционный поставщик, который может или может вернуть нуль. Я получаю исключение, когда оно равно null. Я зарегистрировал провайдера как Singleton, могу ли я зарегистрировать его как тип SingletonContext, который я настраиваю для возврата true для поддерживаетNullCreation()? Я думаю, что если я смогу это сделать, то даже если findOrCreate() вернет null, мой код все равно будет работать, и это то, что я хочу.Как использовать supportNullCreation() в Джерси?
@ApplicationPath("rest")
public class MyApplication extends ResourceConfig
{
public MyApplication()
{
...
// Provider of DB
this.register(new AbstractBinder()
{
@Override
public void configure()
{
bindFactory(DbManager.class).to(EntityManagerFactory.class).in(Singleton.class);
}
});
}
Затем он используется так:
@Singleton
@Path("myservice")
public class WebServiceClass
{
// NOTE: Right now I have to comment this to run without a DB
@Inject
private EntityManagerFactory entityManagerFactory = null;
...
Исключение я получаю это ...
java.lang.IllegalStateException: Context
[email protected] findOrCreate returned a null for
descriptor SystemDescriptor(
implementation=com.db.DbManager
contracts={javax.persistence.EntityManagerFactory}
scope=javax.inject.Singleton
qualifiers={}
descriptorType=PROVIDE_METHOD
descriptorVisibility=NORMAL
metadata=
rank=0
[email protected]f2b1
proxiable=null
proxyForSameScope=null
analysisName=null
id=145
locatorId=0
identityHashCode=863132354
reified=true)
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2075)
...
Большое вам спасибо! Это полностью разрешило проблему и значительно улучшило дизайн. – Coder1224