2013-02-01 47 views
1

我目前正在使用適用於Tomcat 7的64位AmazonLinux服務器將Maven構建的.war文件部署到Elastic Beanstalk。但是,本地主機,沒有運行由於以下錯誤(堆棧跟蹤在底部):Elastic Beanstalk應用程序(Tomcat 7)中的MySQL連接錯誤

javax.naming.NamingException中:com.mysql.jdbc.Driver

我連接到外部Xeround實例。在網絡上閱讀身邊後,我試圖改變我的應用程序的context.xml中這樣:

<Resource auth="Container" 
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" //<- NOT THERE BEFORE 
    driverClassName="com.mysql.jdbc.Driver" 
    logAbandoned="true" 
    maxActive="100" 
    maxIdle="30" 
    maxWait="10000" 
    name="jdbc/xxxx-01292013" 
    password="xxxx" 
    removeAbandoned="true" 
    removeAbandonedTimeout="60" 
    type="javax.sql.DataSource" 
    url="jdbc:mysql://instancexxxx.db.xeround.com:xxxx/xxxx-01292013? autoReconnect=true" 
    username="xxxx-general"/> 

任何人都有一個問題,上傳和使用以前的工作版本的青苗彈性的Tomcat 7應用程序,並找到了一種方法讓它工作?

我也讀過this post,但我不知道在Netbeans maven項目中.ebextensions文件中添加的位置,我不明白這會做什麼。謝謝你的幫助。

1)錯誤注入構造,javax.persistence.PersistenceException:[PersistenceUnit: MyApp的-堅持]無法在 構建的EntityManagerFactory com.berger.jpa.EntityInitializer(EntityInitializer.java:12)
而在com.nexuscop.startup.StartupListener.entityInit(StartupListener.java:40) 定位com.berger.jpa.EntityInitializer 用於現場,而在 com.google定位com.nexuscop.startup.StartupListener

1錯誤。 inject.internal.Errors.throwProvisionExceptionIfErrorsExist(ERR ors.java:451) 在 com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:65) 在 com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:944) 在 com.nexuscop.startup.StartupListener(StartupListener.java:41) 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地 法)以 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 太陽.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:532) at java.lang.Class.newInstance0(Class.java:372)at java.lang.Class.newInstance(Class.java:325)at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java: 125) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4715) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273) 在 org.apache .catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) 在 org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:871) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) 在 org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1099) 在 org.apache.catalina 。startup.HostConfig $ DeployDirectory.run(HostConfig.java:1621) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask的.java:334) 在java.util.concurrent.FutureTask.run(FutureTask.java:166)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 在 java.util.concurrent中。 ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679)導致: javax.persistence.PersistenceException:[PersistenceUnit: nexuscop-persist]無法構建EntityManagerFactory在 org.hibernate.ejb.Ejb3Configuration.buildE ntityManagerFactory(Ejb3Configuration.java:915) 在 org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) 在 javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) 在 javax.persistence .Persistence.createEntityManagerFactory(Persistence.java:47) 在com.berger.jpa.JpaPersistService.start(JpaPersistService.java:83) 在com.berger.jpa.EntityInitializer。(EntityInitializer.java:14) 在陽光下。 reflect.NativeConstructorAccessorImpl.newInstance0(本地 法)以 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java.lang.reflect.Constructor.newInstance(Constructor.java:532) 在 com.google.inject.internal.DefaultConstructionProxyFactory $ 2.newInstance( DefaultConstructionProxyFactory.java:85) 在 com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85) 在 com.google.inject.internal.ConstructorBindingImpl $ Factory.get(ConstructorBindingImpl.java:254) at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53) at com.google.inject.internal.MembersInjectorIm pl.injectMembers(MembersInjectorImpl.java:110) 在 com.google.inject.internal.MembersInjectorImpl $ 1.call(MembersInjectorImpl.java:75) 在 com.google.inject.internal.MembersInjectorImpl $ 1.call(MembersInjectorImpl。的java:73) 在 com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) 在 com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:73) 在 COM .google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:60) ... 23更多原因:org.hibernate.HibernateException:未能找到 組織的數據源。 hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79) 在 org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143) 在 org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java: 51) 在 org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:90) 在 org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863) 在 org.hibernate.cfg.Configuration .buildSettings(Configuration.java:2859) at org.hibernate.cfg.Configuration。javax.naming.NamingException中:buildSessionFactory(Configuration.java:1870) 在 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906) ... 42更致 com.mysql.jdbc.Driver在 org.apache.naming.NamingContext.lookup(NamingContext.java:860)at org.apache.naming.NamingContext.lookup(NamingContext.java:154)at org.apache.naming.NamingContext.lookup(NamingContext。 org.apache.naming.NamingContext.lookup(NamingContext.java:154)at org.apache.naming.NamingContext.lookup(NamingContext.java:831)at org.apache.naming.NamingContext。查找(NamingContext.java:154) org.apache.naming.NamingContext.l org.apache.naming.SelectorContext.lookup(SelectorContext.java:158) javax.naming。 InitialContext.lookup(InitialContext.java:409)在 org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75)

+0

請參閱http://stackoverflow.com/questions/14656320/classnotfoundexception-with-elastic-beanstalk-and-tomcat-7爲我找到了解決辦法。 – oberger

回答

1

許多人目前似乎遇到麻煩.ebextensions方法在工作此時此刻。這是一個解決方法,以啓動和運行。我不會像這樣在生產環境中運行,但是當我對.ebextensions感到沮喪時,我已經使用它來進行測試/調試。

您可以將mysql驅動程序直接放入WAR中。如果您正在使用Maven,只需添加這pom.xml中:

<dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 

您也可以將它添加到META-INF/context.xml的

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" factory="org.apache.commons.dbcp.BasicDataSourceFactory" type="javax.sql.DataSource" 
     url="jdbc:mysql://XXXXXXX 
     ... /> 

,並把這個在POM。 XML(否則BasicDataSourceFactory沒有找到):

<dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-pool</groupId> 
     <artifactId>commons-pool</artifactId> 
     <version>1.6</version> 
    </dependency> 

    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
    </dependency> 
+0

+1 - 馬克,你有什麼擔心關於這樣的生產運行? – Viccari

+2

Viccari - mysql-connector-java應該安裝在tomcat中,而不是打包在WAR中。但更令人懷疑的是,commons-dbcp及其依賴關係實際上是Tomcat框架的一部分,並且它在WAR中具有冗餘。如果你在Tomcat和WAR中的commons JAR有不同的版本,最終可能導致類路徑衝突。 –

相關問題