我正在尝试使用带有JBoss 7.0 Server的Eclipse IDE创建Java企业应用程序。我已经有过使用NetBeans IDE开发此类应用程序的经验。我的主要问题是这两个IDE之间的差异。目前,Eclipse让我头痛于向EAR添加JPA。
我已经配置了具有两个容器的企业应用程序(EAR):
-- EJB
-- WAR
这两个配置为一起工作(Java Build Paths,Manifest和Deployment程序集是为这两个设置的)所以当我在服务器上运行EAR时它都能正常工作。
问题:
我想配置的下一件事是JPA。我想将JPA容器添加到我的EAR中,所以我做到了。我已经创建了JPA 2.1(使用EclipseLink 2.5.x和MySQL),添加到EAR,我将更改添加到EJB项目(右键单击项目 - >属性 - >部署程序 - >添加jpa项目)
在此之后,当我再次尝试运行EAR时,我得到了HTTP Status 404 - The requested resource (/eLearningJJ-war/) is not available
,而我的堆栈跟踪看起来像是下方。
打孔线
我想我是否必须配置一些额外的东西,以便在将JPA添加到我的EAR项目后避免此错误。
如果您需要有关该项目的更多详细信息,请告诉我们, 谢谢。
控制台
18:51:41,833 INFO [org.jboss.modules] JBoss Modules version 1.0.1.GA
18:51:42,224 INFO [org.jboss.msc] JBoss MSC version 1.0.0.GA
18:51:42,280 INFO [org.jboss.as] JBoss AS 7.0.1.Final "Zap" starting
18:51:43,186 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
18:51:43,202 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
18:51:43,202 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
18:51:43,217 INFO [org.jboss.as.logging] Removing bootstrap log handlers
18:51:43,233 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
18:51:43,280 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
18:51:43,452 INFO [org.jboss.as.naming] (Controller Boot Thread) Activating Naming Subsystem
18:51:43,468 INFO [org.jboss.as.osgi] (Controller Boot Thread) Activating OSGi Subsystem
18:51:43,468 INFO [org.jboss.as.naming] (MSC service thread 1-6) Starting Naming Service
18:51:43,530 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
18:51:43,546 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.0.Beta2
18:51:43,561 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.0.Beta3
18:51:43,593 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.0.Beta3
18:51:43,999 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-2) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;native;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\MinGW\bin;C:\msys\1.0\bin;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;.
18:51:43,999 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
18:51:44,452 INFO [org.jboss.as.remoting] (MSC service thread 1-4) Listening on /127.0.0.1:9999
18:51:44,585 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-6) Starting remote JMX connector
18:51:44,675 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080
18:51:44,847 INFO [org.jboss.as.connector] (MSC service thread 1-6) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
18:51:44,907 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-5) Bound data source [java:jboss/datasources/ExampleDS]
18:51:44,927 INFO [org.jboss.as.deployment] (MSC service thread 1-1) Started FileSystemDeploymentService for directory C:\Users\Milan\jboss-as-7.0.1.Final\standalone\deployments
18:51:44,975 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.1.Final "Zap" started in 3626ms - Started 93 of 148 services (55 services are passive or on-demand)
18:51:45,022 INFO [org.jboss.as.deployment] (DeploymentScanner-threads - 1) Found eLearningJJ-ear.ear in deployment directory. To trigger deployment create a file called eLearningJJ-ear.ear.dodeploy
18:51:45,100 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "eLearningJJ-ear.ear"
18:51:45,334 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "eLearningJJ-war.war"
18:51:45,334 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "eLearningJJ-ejb.jar"
18:51:45,897 WARN [org.jboss.as.server.deployment] (MSC service thread 1-3) Class Path entry in "/C:/Users/Milan/jboss-as-7.0.1.Final/standalone/deployments/eLearningJJ-ear.ear/lib/testjpa.jar" does not point to a valid jar for a Class-Path reference.
18:51:46,101 INFO [org.jboss.jpa] (MSC service thread 1-3) read persistence.xml for testjpa
18:51:46,458 WARN [org.jboss.as.server.deployment.service-loader] (MSC service thread 1-4) Encountered invalid class name "com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor" for service type "com.sun.faces.spi.injectionprovider"
18:51:46,459 WARN [org.jboss.as.server.deployment.service-loader] (MSC service thread 1-4) Encountered invalid class name "com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection" for service type "com.sun.faces.spi.injectionprovider"
18:51:46,526 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to eLearningJJ-ear.ear
18:51:46,528 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn't specify jboss.as.jpa.providerModule)
18:51:46,528 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added org.hibernate dependency to application deployment
18:51:46,533 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to eLearningJJ-ejb.jar
18:51:46,533 INFO [org.jboss.as.jpa] (MSC service thread 1-7) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to eLearningJJ-war.war
18:51:46,704 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-8) JNDI bindings for session bean named UserTest in deployment unit subdeployment "eLearningJJ-ejb.jar" of deployment "eLearningJJ-ear.ear" are as follows:
java:global/eLearningJJ-ear/eLearningJJ-ejb/UserTest!com.test.UserTest
java:app/eLearningJJ-ejb/UserTest!com.test.UserTest
java:module/UserTest!com.test.UserTest
java:global/eLearningJJ-ear/eLearningJJ-ejb/UserTest!com.test.UserTestLocal
java:app/eLearningJJ-ejb/UserTest!com.test.UserTestLocal
java:module/UserTest!com.test.UserTestLocal
18:51:46,704 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-8) JNDI bindings for session bean named UserStateless in deployment unit subdeployment "eLearningJJ-ejb.jar" of deployment "eLearningJJ-ear.ear" are as follows:
java:global/eLearningJJ-ear/eLearningJJ-ejb/UserStateless!com.elearningjj.beans.UserStatelessLocal
java:app/eLearningJJ-ejb/UserStateless!com.elearningjj.beans.UserStatelessLocal
java:module/UserStateless!com.elearningjj.beans.UserStatelessLocal
java:global/eLearningJJ-ear/eLearningJJ-ejb/UserStateless!com.elearningjj.beans.UserStateless
java:app/eLearningJJ-ejb/UserStateless!com.elearningjj.beans.UserStateless
java:module/UserStateless!com.elearningjj.beans.UserStateless
18:51:48,392 INFO [org.apache.catalina.core.StandardContext] (MSC service thread 1-2) The listener "com.sun.faces.config.ConfigureListener" is already configured for this context. The duplicate definition has been ignored.
18:51:48,399 INFO [org.apache.catalina.core.StandardContext] (MSC service thread 1-2) The listener "com.sun.faces.config.ConfigureListener" is already configured for this context. The duplicate definition has been ignored.
18:51:48,712 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-2) Initializing Mojarra 2.0.4 (FCS b09-jbossorg-4) for context '/eLearningJJ-war'
18:51:53,821 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /eLearningJJ-war
18:51:54,055 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployment of "eLearningJJ-ear.ear" was rolled back with failure message {"Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"eLearningJJ-ear.ear#testjpa\" missing [ jboss.data-source.java:/ ]"]}
18:51:54,180 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Stopped deployment eLearningJJ-ejb.jar in 131ms
18:51:54,195 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) Stopped deployment eLearningJJ-war.war in 140ms
18:51:54,195 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) Stopped deployment eLearningJJ-ear.ear in 144ms
18:51:54,195 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 1) {"Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"eLearningJJ-ear.ear#testjpa\" missing [ jboss.data-source.java:/ ]"]}}}
解决方案
主要问题是JPA的 persistance.xml 文件配置不正确。就我而言,具体问题与未正确配置的 jta-data-source 有关。
解决方法是检查 JBoss管理控制台,了解有关数据源配置,注册数据源等的更多详细信息。关于此信息源,我的 persistance.xml 文件看起来像是吼叫:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="eLearningJJ-jpa">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>