【问题标题】:Can't get REST WS to work with Netbeans无法让 REST WS 与 Netbeans 一起使用
【发布时间】:2012-02-21 05:05:06
【问题描述】:

我正在关注Netbeans 网站上的教程,但无法使其正常工作。我在 gist here 中发布了相关文件。我选择了一个 maven 项目,Tomcat 7 和 Java 5EE(因为 Java 6EE 显然不适用于 Tomcat 7)

按照教程,我创建了一个带有“用户”表的数据库,Netbeans 可以连接到数据库并创建必要的文件,所以我的数据库没有任何问题。当我运行 Web 应用程序时,它会显示默认的 index.jsp 页面,因此 Web 服务器也可以工作。

如果我尝试访问其中一项资源 (http://localhost:8084/test3/resources/com.mycompany.test3.user/count),我会收到以下异常:

java.lang.RuntimeException: javax.naming.NameNotFoundException: Name persistence-factory is not bound in this Context
    service.UserRESTFacade.getJpaController(UserRESTFacade.java:33)
    service.UserRESTFacade.count(UserRESTFacade.java:97)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:601)    
    com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

据我所知,persistence.xml 看起来不错,并且 Java 文件中引用了该名称,所以我不知道从哪里开始。如前所述,这些文件以 GIST 的形式提供(请参阅顶部的链接)

如果有帮助,我正在运行 Netbeans 和 Tomcat 的第 7 版

【问题讨论】:

    标签: java tomcat jpa netbeans jndi


    【解决方案1】:

    此错误表示您的应用程序尝试在 JNDI 中查找数据源但失败。 JNDI 是一种为绑定到应用容器的应用提供配置的方法,它最常用于配置数据库连接。

    搜索“Tomcat JNDI JPA”,您应该会得到一些有用的信息。

    编辑:

    好的,我仔细查看了您的代码。我实际上不确定 JNDI 查找失败的原因,但由于您设置了应用程序管理的连接,您应该能够完全跳过 JNDI 并像这样获得工厂:

    // use the name specified in persistence.xml
    javax.persistence.Persistence.createEntityManagerFactory("com.mycompany_test3_war_1.0-SNAPSHOTPU")
    

    另一件事:创建一个 EntityManagerFactory 是昂贵的,所以你应该只做一次。你现在拥有它的方式,你正在为每笔交易创建一个,这将是非常低效的。我要做的是在应用程序启动时创建它,然后将它存储在像 ServletContext 这样的地方。

    【讨论】:

    • 不应该persistence.xml + web.xml 照顾吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2012-09-11
    • 2013-04-27
    • 2014-10-31
    • 2018-01-02
    • 2016-11-14
    • 2015-02-01
    相关资源
    最近更新 更多