2012-07-12 105 views
2

我以前沒有在jboss應用程序服務器上部署過。嘗試在openshift上部署Java Web應用程序時出現以下錯誤。我正在使用SpringJPA 2.0在Openshift上部署應用程序時出錯

applicationContext.xml

<jee:jndi-lookup id="dataSource" jndi-name="java:jboss/datasources/MysqlDS" resource-ref="true" /> 

standalone.xml

<datasource jndi-name="java:jboss/datasources/MysqlDS" enabled="${mysql.enabled}" use-java-context="true" pool-name="MysqlDS"> 
        <connection-url>jdbc:mysql://${env.OPENSHIFT_DB_HOST}:${env.OPENSHIFT_DB_PORT}/${env.OPENSHIFT_APP_NAME}</connection-url> 
        <driver>mysql</driver> 
        <security> 
         <user-name>${env.OPENSHIFT_DB_USERNAME}</user-name> 
         <password>${env.OPENSHIFT_DB_PASSWORD}</password> 
        </security> 
       </datasource> 
       <drivers> 
        <driver name="mysql" module="com.mysql.jdbc"> 
         <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> 
        </driver> 
       </drivers> 

錯誤

2012/07/12 09:00:36,714 INFO [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-2) HHH000204: Processing PersistenceUnitInfo [ 
    name: tentacleSpotPU 
    ...] 
2012/07/12 09:00:37,118 WARN [org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator] (MSC service thread 1-2) HHH000181: No appropriate connection provider encountered, assuming application will be supplying connections 
2012/07/12 09:00:37,139 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.persistenceunit."ROOT.war#tentacleSpotPU": org.jboss.msc.service.StartException in service jboss.persistenceunit."ROOT.war#tentacleSpotPU": Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.6.0_24] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.6.0_24] 
    at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24] 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: tentacleSpotPU] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    ... 3 more 
Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 
    at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97) 
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67) 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:176) 
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) 
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:71) 
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2270) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2266) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1735) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 
    ... 9 more 

2012/07/12 09:00:37,309 ERROR [org.jboss.as] (MSC service thread 1-3) JBAS015875: JBoss AS 7.1.0.Final "Thunder" started (with errors) in 75169ms - Started 401 of 720 services (203 services failed or missing dependencies, 113 services are passive or on-demand) 
2012/07/12 09:00:37,440 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "ROOT.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"ROOT.war#tentacleSpotPU\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"ROOT.war#tentacleSpotPU\": Failed to start service"}} 
2012/07/12 09:00:38,574 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment ROOT.war in 1131ms 
2012/07/12 09:00:38,576 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report 
JBAS014777: Services which failed to start:  service jboss.persistenceunit."ROOT.war#tentacleSpotPU": org.jboss.msc.service.StartException in service jboss.persistenceunit."ROOT.war#tentacleSpotPU": Failed to start service 

2012/07/12 09:00:38,609 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.persistenceunit.\"ROOT.war#tentacleSpotPU\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"ROOT.war#tentacleSpotPU\": Failed to start service"}}}} 

什麼我需要做的來解決這個問題?

回答

0

您的項目設置如何?項目是否使用jboss 7.1.0 Final在本地運行?我使用了一個persistence.xml文件,它爲我的JPA 2.0配置定義了我的EntityManagerFactory和hibernate.dialect。位於我的META-INF目錄中。這是我在我的項目中設置的方式。

<persistence 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" 
version="2.0"> 
<persistence-unit name="userpersistence" transaction-type="RESOURCE_LOCAL"> 
    <provider> 
     org.hibernate.ejb.HibernatePersistence 
    </provider> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> 
     <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/acctdatabase"/> 
     <property name="hibernate.connection.username" value="acct-user"/> 
     <property name="hibernate.connection.password" value="password"/> 
    </properties> 
</persistence-unit> 

+0

它部署在Openshit https://openshift.redhat.com。我使用'Spring'來管理我的持久性,所以我沒有在我的'persistence.xml'中做我的數據庫連接。 – 2012-07-13 07:17:33

0

你應該嘗試設置hibernate.dialet屬性,使JBoss的加載持久化上下文沒有連接(可使用連接檢測方言)。它將等待從應用程序獲取連接(在您的情況下爲Spring)。

您可以設置它在persistence.xml還是應該放置在classpath

0

我得到了同樣的異常的根目錄hibernate.properties是可能的。 3-4天后,我意識到我的persistance.xml的位置不正確。我有使用EJB,JSF,MAVEN,MYSQL的EAR Web應用程序。所以,在我的eclipse中,我有ejb項目,web項目,ear項目和主項目。我正在更新EJB項目下的META-INF文件夾內的persistance.xml文件。但是,我忘了在Web Project undre JPA Content中更新相同的東西。因此,您會在您的Web項目的META-INF文件夾下找到相同的persistance.xml文件。默認情況下,unit-name將是'project-name-web'和class。因此,請根據你在這裏提到的相同的方法更新它,包括jta-datasource屬性,它應該可以工作 Mine正在工作。最後,假設!

相關問題