Вам необходимо определить AbstractBinder
и зарегистрировать его в приложении JAX-RS. Связывание определяет, как инъекция зависимости должна создавать ваши классы.
public class MyApplicationBinder extends AbstractBinder {
@Override
protected void configure() {
bind(MyService.class).to(MyService.class);
}
}
Когда @Inject
обнаружен в параметре или поле типа MyService.class
, он создается с использованием класса MyService
. Чтобы использовать это связующее, его необходимо зарегистрировать в приложении JAX-RS. В web.xml
определите приложение JAX-RS следующим образом:
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.mypackage.MyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Внесите класс MyApplication
(указанный выше в init-param
).
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(new MyApplicationBinder());
packages(true, "com.mypackage.rest");
}
}
В конструкторе класса, указанном в конструкторе класса, записывается вставка, определяющая вложение зависимостей, а также приложение, в котором вы можете найти ресурсы REST (в вашем случае MyResource
) с помощью вызова метода packages()
.
У меня была такая же проблема. Кажется, проблема возникает из-за отсутствия sqlite3.dll в пути ". \ Anaconda \ Dlls \". Я решил это, просто скопировав этот файл .dll из других и поместив его по указанному выше пути.