Я разрабатываю простое приложение JAX-WS.@Inject вызывает NullPointerException в JAX-WS
Один из моих конечных точек веб-служб Досталось впрыскивается объект
@WebService(
endpointInterface = "com.kravchenko.service.ClientService",
targetNamespace = "http://com.kravchenko/wsdl"
)
@Named("clientServiceImpl")
public class ClientServiceImpl implements ClientService {
@Inject
ClientDAO clientDAO;
public void addClient(Client client) {
if (clientDAO == null) {
System.out.println("NULL CLIENTDAO");
}
clientDAO.addClient(client);
}
}
Когда я звоню его метод addClient (клиент-клиент) над мылом поднимает NPE.
Мой DAO также очень просто и выглядит как
@Singleton
public class ClientDAO {
public Map<Long,Client> clients= new ConcurrentHashMap<Long, Client>();;
public void addClient(Client client) {
clients.put(client.getId(),client);
}
}
Я попытался типа впрыска для инкубационного инъекции, но он не работает, тоже. Я также попытался удалить @Singleton и/или использовать другие аннотации, такие как @ManagedBean или @Stateful, однако NPE все еще остается. У меня есть sun-jaxws.xml с двумя конечными точками. У меня есть beans.xml в моем проекте:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
</beans>
Все методы DAO работать, хотя, если я объявляю его как CliendDAO dao = new ClientDAO();
Но это не так, как я хочу, чтобы мой код, который будет сформирован.
мой pom.xml получил только 2 зависимостей:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
Любая идея, как я могу решить эту проблему, пожалуйста?
мой pom.xml получил только 2 зависимостей: com.sun.xml.ws JAXWS-RT 2.1.3 javax JavaEE-апи 7,0 –
смотреть на [это] SO пост (HTTP: // StackOverflow .com/вопросы/5661022/инъекционный-эд-атрибут-останки-нуль? RQ = 1). Кажется, что у этого пользователя была такая же проблема. Может быть, это поможет вам. ** РЕДАКТИРОВАТЬ: ** и попытаться поместить ваш 'clientDAO.addClient (клиент);' в блок 'else'. В противном случае этот код будет выполнен, даже если 'clientDAO == null'. – QBrute
Не могли бы вы также опубликовать stacktrace? –