Я пытаюсь использовать hk2 DI в майке, и я прочитал несколько текстов по этому вопросу. (Большинство из датировано я думаю) В настоящее время у меня есть класс, который расширяет ResourceConfig:
Как использовать HK2 DI framkework с Джерси 2?
public class MyApplication extends ResourceConfig{
public MyApplication(){
register(new AbstractBinder() {
@Override
protected void configure() {
bind(AuthenticationServiceImpl.class).to(AuthenticationService.class);
bind(PropertiesHandlerImpl.class).to(PropertiesHandler.class).in(Singleton.class);
}
});
packages(true, "com.myclass"); }
}
и в другом классе я стараюсь придать одну из этих связанных классов:
public class JDBCConnectionStrategy implements DatabaseConnectionStrategy {
private Connection connection;
@Inject
PropertiesHandlerImpl propertiesHandler;
public JDBCConnectionStrategy() throws SQLException{
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String host = propertiesHandler.getProperty("host");
String userName = propertiesHandler.getProperty("userName");
String password = propertiesHandler.getProperty("password");
//Create a connection
this.connection = DriverManager.getConnection(host, userName, password);
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
}
....
}
объявлена следующим образом:
@Singleton
@Service
public class PropertiesHandlerImpl implements PropertiesHandler {...}
Проблема: Я получаю следующее сообщение об ошибке, когда я запуск моего приложения
WARNING: The following warnings have been detected: WARNING: Unknown HK2 failure detected:
MultiException stack 1 of 2 java.lang.NullPointerException
at com.myclass.JDBCConnectionStrategy.<init>
Update:
Я хотел бы добавить, что я добавил пакет прикладных программ для сканируемого пути в web.xml:
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.myclass.system.CmisApplication</param-value>
</init-param>
Я вижу одно неправильно, но я не решаются разместить его в ответ, потому что я не вижу проблемы о любом месте в вашем посте. Какая _exactly_ проблема, с которой вы сталкиваетесь (например, error/stacktrace/exception)? –
@peeskillet Я получаю исключение NullPointerException при использовании введенных свойствHandler, например, –
@ Сервис только работает, если вы используете один из автоматических методов для сообщения hk2 о ваших сервисах. Чтобы использовать автоматические методы, вам, вероятно, нужно вызвать что-то вроде https://hk2.java.net/2.5.0-b31/apidocs/org/glassfish/hk2/utilities/ServiceLocatorUtilities.html#createAndPopulateServiceLocator. В общем, прочитайте эту страницу для информации об населении автоматического обслуживания: https://hk2.java.net/2.5.0-b31/getting-started.html#Automatic_Service_Population – jwells131313