2012-02-01 3 views
2

지금 당장이 EJB 튜토리얼을 수행하고 있습니다 : http://programming.manessinger.com/tutorials/an-eclipse-glassfish-java-ee-6-tutorial/#heading_toc_j_23 대신 GlassFish 대신 JBoss 7.0을 사용하고 DerbyDB 대신 PostgreSQL 및 Hibernate를 지속성 공급자로 사용합니다.JBoss가 개발 환경에서 PostgreSQL 용 JDBC 드라이버를 찾을 수 없습니다.

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC00001: Failed to start service jboss.persistenceunit."JEETutorialEAR.ear/JEETutorialEJB.jar#JEETutorialEJB": org.jboss.msc.service.StartException in service jboss.persistenceunit."JEETutorialEAR.ear/JEETutorialEJB.jar#JEETutorialEJB": Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27] 
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_27] 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: JEETutorialEJB] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:908) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:884) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.jboss.as.jpa.service.PersistenceUnitService.createContainerEntityManagerFactory(PersistenceUnitService.java:143) 
    at org.jboss.as.jpa.service.PersistenceUnitService.start(PersistenceUnitService.java:77) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA] 
    ... 3 more 
Caused by: org.hibernate.HibernateException: Specified JDBC Driver org.postgresql.Driver class not found 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:102) 
    at org.hibernate.service.internal.BasicServiceRegistryImpl.configureService(BasicServiceRegistryImpl.java:80) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:145) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:118) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:208) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:85) 
    at org.hibernate.service.internal.BasicServiceRegistryImpl.configureService(BasicServiceRegistryImpl.java:80) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:145) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:118) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:70) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2253) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2249) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1720) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:76) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899) 
    ... 9 more 
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver from [Module "org.hibernate:main" from local module loader @624b035d (roots: C:\Users\myname\jboss-as-web-7.0.2.Final\modules)] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191) [jboss-modules.jar:1.0.2.GA] 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361) [jboss-modules.jar:1.0.2.GA] 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333) [jboss-modules.jar:1.0.2.GA] 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:310) [jboss-modules.jar:1.0.2.GA] 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:103) [jboss-modules.jar:1.0.2.GA] 
    at java.lang.Class.forName0(Native Method) [:1.6.0_27] 
    at java.lang.Class.forName(Class.java:169) [:1.6.0_27] 
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:191) 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:99) 
    ... 23 more 

내의 persistence.xml :

내 문제는 보스가 나에게 다음과 같은 오류를 제공하기 때문에 나는 (내가 그 튜토리얼 ATM에서 오전 곳이다)에 EAR을 배포하고 웹 서비스를 테스트 할 수있다
<?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="JEETutorialEJB" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <properties> 
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/jeetutorial"/> 
      <property name="hibernate.connection.user" value="postgres"/> 
      <property name="hibernate.connection.password" value="postgres"/> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
      <property name="hibernate.default_schema" value="public"/> 
      <property name="hibernate.default_catalog" value="jeetutorial"/> 
      <property name="hibernate.connection.username" value="postgres"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

프로젝트 경로에 PostgreSQL JDBC 드라이버가 추가되었습니다. 그리고 내가 한 일은 여기서 조언하는 것입니다 : http://jan.zawodny.pl/blog/2011/07/jboss-7-postgresql-9 sans datasource configuration (서버를 시작하는 동안 Eclipse에 의해 수행됩니다).

답변

1

드라이버를 수동으로 배포해야합니다. 독립 실행 형 모드에서는 $ JBOSS/standalone/deployments /에 복사하여 복사합니다. 모듈로 패키지화 할 필요가 없습니다.

AS7.1의 이후 버전에서는 데이터 소스를 만들기 위해 다시 고전 -ds.xml 파일을 사용할 수 있습니다. 하지만 그것은 단지 의견 일뿐입니다.

+0

글쎄, 나는 당신이 말한 것을 방금했습니다. 그러나 나는 그 튜토리얼에서 나중에 언급되는 EJB의 웹 서비스에 액세스하는 방법을 알아 내지 못했습니다. 그래서 Glassfish 서버로 전환했습니다. – DoktorNo

관련 문제