У меня есть приложение, которое работало на Java 6 + Glassfish 3. Я перевожу этот проект для работы на Glassfish 5.1 с oracle java 8.
Приложение собирается без проблем.Во время развертывания единственными линиями, связанными с jpa / eclipselink, являются
Info: EclipseLink, version: Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a
Info: /file:/home/eelke/NetBeansProjects/MplusLicentieService/build/web/WEB-INF/classes/_MplusLicentieServicePU login successful
Однако, когда мыльный вызов выполняется, NullPointerException
запускается.С помощью отладчика я проверил, что нулевой указатель фактически является единицей персистентности.Вот определение веб-сервиса, EntitiyManager и одного из методов, который потерпел неудачу.В рамках метода em == null
.Не учитывайте другие утверждения и переменные.
@WebService(serviceName = "LicentieWebService")
public class LicentieWebService {
@PersistenceContext(unitName = "MplusLicentieServicePU")
private EntityManager em;
@Resource
private javax.transaction.UserTransaction utx;
@WebMethod(operationName = "getLicentie2")
public QLicentieAntwoord getLicentie2(
@WebParam(name = "licentieNr") String licentieNr,
@WebParam(name = "filiaalNr") int filiaal,
@WebParam(name = "werkplekNr") int werkplek,
@WebParam(name = "codewoord") String codewoord) {
try {
Licentie lic = em.find(Licentie.class, licentieNr);
...
} catch (ApplicationError ex) {
...
}
}
Я также попытался переопределить единицу персистентности в NetBeans, но это ничего не изменило.
Некоторые дополнительные выводы
В том же самомПроект также является EJB без сохранения состояния, который имеет функцию, которая вызывается по расписанию таймера.В этот EJB второй EJB без сохранения состояния вводится с помощью @Inject, это работает.В этот второй EJB вставлен тот же постоянный контекст, что и в веб-сервисе.Это работает, оно внедряется, и запросы выполняются, как и ожидалось.
Найдены некоторые строки журнала, которые могут быть связаны
Информация: специфический дескриптор RI JAX-WS(WEB-INF / sun-jaxws.xml) находится в сети архива, и поэтому развертывание Enterprise Web Service (109) отключено для этого архива, чтобы избежать дублирования служб.