Персистентный блок не введен в веб-сервис - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть приложение, которое работало на 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) отключено для этого архива, чтобы избежать дублирования служб.

...