java - 引用 JPA 的问题

标签 java eclipse jboss orm

我必须在我的一个项目中使用一个 jpa 项目,但是当我创建一个实体管理器并在我的 session bean 中调用 persistencecontect 时,我遇到了这个错误:

@Stateless
public class Biblio implements BiblioLocal {
 @PersistenceContext(unitName="BiblioJPA")
 private EntityManager em;
    /**
     * Default constructor. 
     */
    public Biblio() {
        // TODO Auto-generated constructor stub
    }

 @Override
 public String succes() {
  // TODO Auto-generated method stub
  return " beta";
 }
 public void toevoegenBoek(){
  Boeken boek = new Boeken();
  boek.setTitel("harry P.");
  boek.setAuteur("rowling");
  em.persist(boek);
 }

}

我的 servlet(从这个 sessionbean 调用一个方法)将不再加载并给我这个很长的错误,我对此一无所知。有任何想法吗? (没有 entitymanager 和 persistencecontext 我的 servlet 确实加载了,但是我无法调用与 jpa 相关的任何函数!)

谢谢!

运行 servlet 时出现的错误:

javax.servlet.ServletException: Error instantiating servlet class servlets.BiblioServlet
    org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)


root cause 

java.lang.RuntimeException: Unable to inject jndi dependency: env/servlets.BiblioServlet/biblio into property servlets.BiblioServlet.biblio: BiblioEAR not bound
    org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:82)
    org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.processInjectors(TomcatInjectionContainer.java:366)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:271)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:265)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)
    org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)


root cause 

javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: BiblioEAR not bound]
    org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1352)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:817)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
    org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)
    org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)
    org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.processInjectors(TomcatInjectionContainer.java:366)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:271)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:265)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)
    org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)


root cause 

javax.naming.NameNotFoundException: BiblioEAR not bound
    org.jnp.server.NamingServer.getBinding(NamingServer.java:771)
    org.jnp.server.NamingServer.getBinding(NamingServer.java:779)
    org.jnp.server.NamingServer.getObject(NamingServer.java:785)
    org.jnp.server.NamingServer.lookup(NamingServer.java:396)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:726)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
    javax.naming.InitialContext.lookup(Unknown Source)
    org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1346)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:817)
    org.jnp.interfaces.NamingContext.lookup(NamingContext.java:686)
    org.jboss.ejb3.JndiUtil.lookup(JndiUtil.java:44)
    org.jboss.injection.JndiPropertyInjector.lookup(JndiPropertyInjector.java:75)
    org.jboss.injection.JndiPropertyInjector.inject(JndiPropertyInjector.java:99)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.processInjectors(TomcatInjectionContainer.java:366)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:271)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:265)
    org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:256)
    org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Unknown Source)

我的控制台中的错误(在 eclipse 中)

DEPLOYMENTS MISSING DEPENDENCIES:
  Deployment "jboss.j2ee:ear=BiblioEAR.ear,jar=BiblioEJB.jar,name=Biblio,service=EJB3" is missing the following dependencies:
    Dependency "<UNKNOWN jboss.j2ee:ear=BiblioEAR.ear,jar=BiblioEJB.jar,name=Biblio,service=EJB3>" (should be in state "Described", but is actually in state "** UNRESOLVED Demands 'persistence.unit:unitName=BiblioEAR.ear/BiblioJPA.jar#BiblioJPA' **")
  Deployment "jboss.j2ee:ear=BiblioEAR.ear,jar=BiblioEJB.jar,name=Biblio,service=EJB3_endpoint" is missing the following dependencies:
    Dependency "jboss.j2ee:ear=BiblioEAR.ear,jar=BiblioEJB.jar,name=Biblio,service=EJB3" (should be in state "Configured", but is actually in state "PreInstall")

DEPLOYMENTS IN ERROR:
  Deployment "persistence.unit:unitName=BiblioEAR.ear/BiblioJPA.jar#BiblioJPA" is in error due to the following reason(s): org.xml.sax.SAXParseException: cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'entity-mappings' is not valid with respect to the corresponding attribute use. Attribute 'version' has a fixed value of '1.0'.
  Deployment "<UNKNOWN jboss.j2ee:ear=BiblioEAR.ear,jar=BiblioEJB.jar,name=Biblio,service=EJB3>" is in error due to the following reason(s): ** UNRESOLVED Demands 'persistence.unit:unitName=BiblioEAR.ear/BiblioJPA.jar#BiblioJPA' **

编辑:

持久性.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="BiblioJPA" transaction-type="JTA">
        <jta-data-source>java:/MySqlDSAlfa</jta-data-source>
    </persistence-unit>
</persistence>

mysql-ds.xml

<datasources>
  <local-tx-datasource>
    <jndi-name>MySqlDSAlfa</jndi-name>
    <connection-url>jdbc:mysql://localhost:8080/database</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password></password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

最佳答案

好吧,这看起来像是一个 JDNI 查找问题(“JPA 无法查找数据源”)。

您能否展示您的persistence.xml 和您的xxx-ds.xml 配置文件。


好的,现在,这个错误看起来很奇怪(从控制台输出来看):

org.xml.sax.SAXParseException: cvc-complex-type.3.1: Value '2.0' of attribute 'version' of element 'entity-mappings' is not valid with respect to the corresponding attribute use. Attribute 'version' has a fixed value of '1.0'.

看来您正在使用对象/关系映射文件,恐怕您正面临 HHH-5310目前尚未修复。你能没有对象/关系映射文件吗?

关于java - 引用 JPA 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376249/

相关文章:

eclipse - Subversion、VisualSVN 服务器出现 "Key usage violation in certificate"错误

java - Hibernate:无法部署应用程序打包的持久性提供程序

java - 未捕获异常处理程序中的未捕获异常

java - 如何在xamarin.android中使用java代码?

android - import"existing projects into workspace"和 "exsisiting android code into workspace"有什么区别?

java - Infinispan 的预加载问题(不是 AdvancedCacheLoader 的实例)

jboss - 从命令行取消部署 JBoss 应用程序服务器中的应用程序

java - 为什么我会收到已知和受信任证书的 "No issuer certificate for certificate in certification path found"错误?

java - 运行窗体小程序时无法处理 Swing 按钮事件

java - 在 eclipse 插件中查找资源的路径