无法启动服务 jboss.persistenceunit:org.hibernate.service.UnknownServiceException
Posted
技术标签:
【中文标题】无法启动服务 jboss.persistenceunit:org.hibernate.service.UnknownServiceException【英文标题】:Failed to start service jboss.persistenceunit: org.hibernate.service.UnknownServiceException 【发布时间】:2014-04-20 18:04:22 【问题描述】:我想问是否有人可以帮助解决这个问题,因为我被它困住了,我不知道问题可能出在哪里。到目前为止,我在 Glassfish Server 4 下开发了我的应用程序。现在我决定为 WildFly 更改我的服务器,并编辑了一些配置以便能够在 Wild Fly 上运行它。
项目是使用 maven 创建的,我使用 mvn install wildfly:deploy 命令从终端运行它。
这是服务器日志:
09:42:29,625 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876: Starting deployment of "sk.fri.war" (runtime-name: "sk.fri.war")
09:42:31,906 INFO [org.jboss.as.jpa] (MSC service thread 1-1) JBAS011401: Read persistence.xml for FRIApvvPU
09:42:32,073 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 53) JBAS011409: Starting Persistence Unit (phase 1 of 2) Service 'sk.fri.war#FRIApvvPU'
09:42:32,074 INFO [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 53) HHH000204: Processing PersistenceUnitInfo [
name: FRIApvvPU
...]
09:42:33,398 INFO [org.jboss.weld.deployer] (MSC service thread 1-7) JBAS016002: Processing weld deployment sk.fri.war
09:42:33,416 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named LoginManagementService in deployment unit deployment "sk.fri.war" are as follows:
java:global/sk.fri/LoginManagementService!sk.fri.service.LoginManagementService
java:app/sk.fri/LoginManagementService!sk.fri.service.LoginManagementService
java:module/LoginManagementService!sk.fri.service.LoginManagementService
java:global/sk.fri/LoginManagementService
java:app/sk.fri/LoginManagementService
java:module/LoginManagementService
09:42:33,417 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named MeasurementProcessingService in deployment unit deployment "sk.fri.war" are as follows:
java:global/sk.fri/MeasurementProcessingService!sk.fri.service.MeasurementProcessingService
java:app/sk.fri/MeasurementProcessingService!sk.fri.service.MeasurementProcessingService
java:module/MeasurementProcessingService!sk.fri.service.MeasurementProcessingService
java:global/sk.fri/MeasurementProcessingService
java:app/sk.fri/MeasurementProcessingService
java:module/MeasurementProcessingService
09:42:33,417 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named CityService in deployment unit deployment "sk.fri.war" are as follows:
java:global/sk.fri/CityService!sk.fri.service.CityService
java:app/sk.fri/CityService!sk.fri.service.CityService
java:module/CityService!sk.fri.service.CityService
java:global/sk.fri/CityService
java:app/sk.fri/CityService
java:module/CityService
09:42:33,557 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-4) JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
09:42:33,558 INFO [org.jboss.weld.deployer] (MSC service thread 1-4) JBAS016005: Starting Services for CDI deployment: sk.fri.war
09:42:33,565 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) JBAS010417: Started Driver service with driver-name = sk.fri.war_org.postgresql.Driver_9_3
09:42:33,567 INFO [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016008: Starting weld service for deployment sk.fri.war
09:42:33,584 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 53) JBAS011409: Starting Persistence Unit (phase 2 of 2) Service 'sk.fri.war#FRIApvvPU'
09:42:49,079 INFO [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 53) HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect
09:42:49,081 INFO [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (ServerService Thread Pool -- 53) HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
09:42:49,148 INFO [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (ServerService Thread Pool -- 53) HHH000397: Using ASTQueryTranslatorFactory
09:42:49,231 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 53) MSC000001: Failed to start service jboss.persistenceunit."sk.fri.war#FRIApvvPU": org.jboss.msc.service.StartException in service jboss.persistenceunit."sk.fri.war#FRIApvvPU": org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_51]
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:173) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.envers.event.EnversIntegrator.integrate(EnversIntegrator.java:65) [hibernate-envers-4.2.7.Final.jar:4.2.7.Final]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:311) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:399) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842) [hibernate-entitymanager-4.3.1.Final.jar:4.3.1.Final]
at org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44) [jipijapa-hibernate4-3-1.0.1.Final.jar:]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:154) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
... 8 more
09:42:49,237 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 5) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "sk.fri.war")]) - failure description:
"JBAS014671: Failed services" => "jboss.persistenceunit.\"sk.fri.war#FRIApvvPU\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"sk.fri.war#FRIApvvPU\": org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]",
"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.\"sk.fri\".\"sk.fri\".DefaultDataSource is missing [jboss.naming.context.java.jboss.datasources.ExampleDS]"]
09:42:49,243 ERROR [org.jboss.as.server] (management-handler-thread - 5) JBAS015870: Deploy of deployment "sk.fri.war" was rolled back with the following failure message:
"JBAS014671: Failed services" => "jboss.persistenceunit.\"sk.fri.war#FRIApvvPU\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"sk.fri.war#FRIApvvPU\": org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.classloading.spi.ClassLoaderService]",
"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.\"sk.fri\".\"sk.fri\".DefaultDataSource is missing [jboss.naming.context.java.jboss.datasources.ExampleDS]"]
09:42:49,246 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) JBAS010418: Stopped Driver service with driver-name = sk.fri.war_org.postgresql.Driver_9_3
09:42:49,248 INFO [org.jboss.weld.deployer] (MSC service thread 1-2) JBAS016009: Stopping weld service for deployment sk.fri.war
09:42:49,264 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 53) JBAS011410: Stopping Persistence Unit (phase 1 of 2) Service 'sk.fri.war#FRIApvvPU'
09:42:49,322 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015877: Stopped deployment sk.fri.war (runtime-name: sk.fri.war) in 79ms
09:42:49,324 INFO [org.jboss.as.controller] (management-handler-thread - 5) JBAS014774: Service status report
JBAS014775: New missing/unsatisfied dependencies:
service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.CREATE (missing) dependents: [service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.START]
service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.VIEW."sk.fri.service.MeasurementProcessingService".LOCAL (missing) dependents: [service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.START]
service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.WeldInstantiator (missing) dependents: [service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.START]
service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.ejb.non-functional-timerservice (missing) dependents: [service jboss.deployment.unit."sk.fri.war".component.MeasurementProcessingService.START]
JBAS014776: Newly corrected services:
service jboss.deployment.unit."sk.fri.war".component.LoginManagementService.WeldInterceptorBindingsService (no longer required)
service jboss.deployment.unit."sk.fri.war".component."com.sun.faces.config.ConfigureListener".WeldInstantiator (no longer required)
service jboss.deployment.unit."sk.fri.war".component."javax.faces.webapp.FacetTag".WeldInstantiator (no longer required)
service jboss.undertow.deployment.default-server.default-host./apvv (no longer required)
JBAS014777: Services which failed to start: service jboss.persistenceunit."sk.fri.war#FRIApvvPU"
我的 standalone.xml 配置(仅包括我添加或编辑的部分):
<datasources>
<datasource jndi-name="java:jboss/datasources/jBossJaasPostgres" pool-name="jBossJaasPostgres" enabled="true" use-ccm="false" jta="false" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/apvv</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql</driver>
<pool>
<min-pool-size>2</min-pool-size>
<max-pool-size>50</max-pool-size>
</pool>
<security>
<user-name>username</user-name>
<password>password</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
然后是默认数据源:
<subsystem xmlns="urn:jboss:domain:jpa:1.1">
<jpa default-datasource="java:jboss/datasources/jBossJaasPostgres"/>
</subsystem>
并在安全域下(因为我使用 JAAS)
<security-domain name="apvvJaas">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/jBossJaasPostgres"/>
<module-option name="principalsQuery" value="select password from v_user_group where username = ?"/>
<module-option name="rolesQuery" value="select rolename, 'Roles' from v_user_group where username = ?"/>
<module-option name="hashAlgorithm" value="SHA-256"/>
<module-option name="hashEncoding" value="Hex"/>
<module-option name="hashUserPassword" value="true"/>
<module-option name="hashStorePassword" value="true"/>
</login-module>
</authentication>
</security-domain>
我的persistence.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="FRIApvvPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:jboss/datasources/jBossJaasPostgres</non-jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
</properties>
</persistence-unit>
</persistence>
hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect" >org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://127.0.0.1:5432/apvv</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.jdbc.batch_size">20</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
<mapping class="sk.fri.model.MeasurementDataColumn"/>
<mapping class="sk.fri.model.Winding"/>
<mapping class="sk.fri.model.Label"/>
<mapping class="sk.fri.model.MeasurementColumn"/>
<mapping class="sk.fri.model.Measurement"/>
<mapping class="sk.fri.model.GroupApp"/>
<mapping class="sk.fri.model.MeasurementDataColumnId"/>
<mapping class="sk.fri.model.Location"/>
<mapping class="sk.fri.model.UserApp"/>
<mapping class="sk.fri.model.Company"/>
<mapping class="sk.fri.model.LocationId"/>
<mapping class="sk.fri.model.WindingTransformer"/>
<mapping class="sk.fri.model.Manufacturer"/>
<mapping class="sk.fri.model.Transformer"/>
<mapping class="sk.fri.model.ColumnData"/>
<mapping class="sk.fri.model.WindingTransformerId"/>
<mapping class="sk.fri.model.City"/>
<mapping class="sk.fri.model.Measurand"/>
</session-factory>
</hibernate-configuration>
jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>java:/jaas/apvvJaas</security-domain>
<context-root>/apvv</context-root>
</jboss-web>
这是我生成 EntityManager 的代码的一部分:
@Produces
@RequestScoped
public EntityManager produceEntityManager()
EntityManagerFactory emf = Persistence.createEntityManagerFactory("FRIApvvPU");
EntityManager em = emf.createEntityManager();
return em;
与 Postgres 数据库的连接工作正常我已经从 Wildfly 控制台对其进行了测试,因为数据源 jBossJaasPostgres 已成功创建。
我找到了这个问题的答案,但没有一个适合我的答案。
非常感谢您的回答。
【问题讨论】:
【参考方案1】:我删除了 hibernate.cfg.xml 并将配置从这个文件移到了 persistence.xml。然后我还从 WEB-INF/lib 文件夹中删除了所有休眠文件,因为 WildFly 有自己的文件,这种情况也可能产生冲突。此链接中有关此问题的更多详细信息: JBoss Community Forum
【讨论】:
将链接中的一些相关信息添加到您的答案并接受它。【参考方案2】:我正在使用 Hibernate 开发一个项目,当我将服务器 tomcat 更改为 Jboss(WildFly) 时,由于 Maven 配置(Pom.xml),我的项目出现了一些问题。 WildFly 已经拥有我的项目所需的罐子,但它产生了冲突。
我把compile改成provided,这样就解决了:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.0.1.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.21.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.2.21.Final</version>
<scope>provided</scope>
</dependency>
【讨论】:
对我来说,这些方法都不起作用。还有什么?【参考方案3】:这是连接数据库的问题。只需在部署代码之前打开本地数据库。然后它会正常工作。
【讨论】:
以上是关于无法启动服务 jboss.persistenceunit:org.hibernate.service.UnknownServiceException的主要内容,如果未能解决你的问题,请参考以下文章