Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 未在webservice中注入持久化单元_Jpa_Jakarta Ee_Glassfish_Jax Ws - Fatal编程技术网

Jpa 未在webservice中注入持久化单元

Jpa 未在webservice中注入持久化单元,jpa,jakarta-ee,glassfish,jax-ws,Jpa,Jakarta Ee,Glassfish,Jax Ws,我有一个在Java6+GlassFish3上运行的应用程序。我正在将此项目迁移到使用oracle java 8的Glassfish 5.1上运行 应用程序的构建没有问题。在部署期间,只有jpa/eclipselink相关的行是 Info: EclipseLink, version: Eclipse Persistence Services - 2.7.4.v20190115-ad5b7c6b2a Info: /file:/home/eelke/NetBeansProjects/Mplus

我有一个在Java6+GlassFish3上运行的应用程序。我正在将此项目迁移到使用oracle java 8的Glassfish 5.1上运行

应用程序的构建没有问题。在部署期间,只有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
但是,当执行soap调用时,会触发
NullPointerException
。我已经用调试器验证了null指针实际上是持久性单元。下面是webservice、EntityManager和失败方法之一的定义。在方法中
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中,注入了与webservice相同的持久上下文。这是可行的,它被注入并按预期执行查询

找到一些可能相关的日志行

信息:找到JAX-WSRI特定描述符(WEB-INF/sun jaxws.xml) 在归档web和企业web服务(109)部署中 已对此存档禁用,以避免服务重复


相关报道:@perissf,这个问题和答案对我没有帮助。资源和池已在glassfish中创建并更正,名称与persistence.xml匹配。一旦我在那里弄坏了什么东西,我也会在glassfish日志中得到关于它的错误信息。但是我没有得到任何错误,em只是没有被注入。好吧,我想Web服务不是在代码中的某个地方被手动实例化的。它的生命周期应该由web/应用程序管理container@perissf,更正它是由容器管理的。注:我还为我的问题添加了一些额外的发现。@perissf,别介意我让它起作用了,我想我不确定到底出了什么问题。经过多次尝试后,我重置为上次提交,并重新解决了丢失的依赖项,现在它可以工作了。相关:@perissf,该问题和答案中没有对我有帮助的内容。资源和池已在glassfish中创建并更正,名称与persistence.xml匹配。一旦我在那里弄坏了什么东西,我也会在glassfish日志中得到关于它的错误信息。但是我没有得到任何错误,em只是没有被注入。好吧,我想Web服务不是在代码中的某个地方被手动实例化的。它的生命周期应该由web/应用程序管理container@perissf,更正它是由容器管理的。注:我还为我的问题添加了一些额外的发现。@perissf,别介意我让它起作用了,我想我不确定到底出了什么问题。在多次尝试之后,我重置为上次提交,并重新解决了丢失的依赖项,现在它可以工作了。