2015-04-06 220 views
2

我遇到了WAR文件的問題,我想部署到Tomcat服務器8. tomcat服務器安裝了默認值(僅更改了用戶和密碼)。 當我部署WAR文件,我碰到catalina.out的日誌輸出:如何部署Grails戰爭到tomcat

Configuring Spring Security Core ... 
... finished configuring Spring Security Core 

Configuring Spring Security REST ... 
... finished configuring Spring Security REST 

2015-04-06 13:37:37,345 [http-nio-8080-exec-2] ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creat$ 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of$ 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve refe$ 
    ... 5 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init meth$ 
    ... 5 more 
Caused by: org.hibernate.MappingException: Missing type or column for column[descripciono_descripciones] on domain[Ejercicios] referencing[$ 
    ... 5 more 
2015-04-06 13:37:37,348 [http-nio-8080-exec-2] ERROR context.GrailsContextLoaderListener - Error initializing Grails: Error creating bean $ 
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of$ 
     at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
     at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve refe$ 
    ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init meth$ 
    ... 3 more 
Caused by: org.hibernate.MappingException: Missing type or column for column[descripciono_descripciones] on domain[Ejercicios] referencing[$ 
    ... 3 more 
2015-04-06 13:38:57,516 [http-nio-8080-exec-8] ERROR context.GrailsContextLoaderListener - Error initializing Grails: Error creating bean $ 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of$ 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve refe$ 
    ... 3 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init meth$ 
    ... 3 more 
Caused by: org.hibernate.MappingException: Missing type or column for column[descripciono_descripciones] on domain[Ejercicios] referencing[$ 
    ... 3 more 
06-Apr-2015 13:38:57.517 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardContext.startInternal Error listenerStart 
06-Apr-2015 13:38:57.518 SEVERE [http-nio-8080-exec-8] org.apache.catalina.core.StandardContext.startInternal Context [/backend-gimnasio-0.$ 
06-Apr-2015 13:38:57.540 WARNING [http-nio-8080-exec-8] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web applic$ 
06-Apr-2015 13:38:57.540 WARNING [http-nio-8080-exec-8] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web app$ 
    java.lang.Object.wait(Native Method) 
    java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135) 
    java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151) 
    com.mysql.jdbc.NonRegisteringDriver$1.run(NonRegisteringDriver.java:93) 

我的猜測是,有與MySQL連接的問題,但我真的不知道我應該在哪裏指定連接字符串或類似的東西......數據庫在服務器上創建,而Grails中的DataSource指向該數據庫。


編輯:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<webapps> 
    <Context path="/backend-gimnasio" docBase="webapps/backend-gimnasio" debug="0" reloadable="true"> 
     <!-- Replace path and docBase and etc. with your applications settings. 
      This file assumes that this file is named apps-myapp.xml and is 
      located under Tomcats configuration directory. It is also assumed that 
      the application which is going to use MyConnection JDBC connection is 
      called myapp and is accessed as http://yourdomain.tld/myapp and is 
      located under Tomcats webapps directory. Database name is assumed 
      my_database. Replace these with your actual values. --> 


     <!-- This is a sample XML config file for an Apache Tomcat 5.5 server to 
      setup MySQL Connector/J 5.1 for JDBC connectivity. Information are 
      derived from sources available in the Internet. --> 


     <!-- Resource name and ResourceParams name, must be the same and 
      The connection pool will be bound into JNDI with that name 
      Eg: "java:/comp/env/jdbc/MyConnection". Replace MyConnection in both 
      places with the name you want for the connection. --> 
     <Resource name="jdbc/MyConnection" auth="Container" type="javax.sql.DataSource"/> 
     <ResourceParams name="jdbc/MyConnection"> 


     <parameter> 
       <name>factory</name> 
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> 
     </parameter> 


     <!-- Don't set this higher than max_connections on your MySQL server, 
      usually this should be a 10 or a few 10's of connections, not 
      hundreds or thousands --> 
     <parameter> 
       <name>maxActive</name> 
       <value>10</value> 
     </parameter> 


     <!-- Just allow only as many idle connections as you require. Too much 
      is bad. --> 
     <parameter> 
       <name>maxIdle</name> 
       <value>5</value> 
     </parameter> 
     <!-- Don't use autoReconnect=true, it's going away eventually and it's a 
      crutch for older connection pools that couldn't test connections. 
      You need to decide whether your application is supposed to deal with 
      SQLExceptions (hint, it should), and how much of a performance 
      penalty you're willing to pay to ensure 'freshness' of the connection --> 
     <parameter> 
       <name>validationQuery</name> 
       <value>SELECT 1</value> 
     </parameter> 


     <!-- The most conservative approach is to test connections before they're 
      given to your application. For most applications this is okay, the 
      query used above is very small and takes no real server resources to 
      process, other than the time used to traverse the network. If you have 
      a high-load application you'll need to rely on something else. --> 
     <parameter> 
       <name>testOnBorrow</name> 
       <value>true</value> 
     </parameter> 
     <!-- Otherwise, or in addition to testOnBorrow, you can test while 
      connections are sitting idle --> 
     <parameter> 
       <name>testWhileIdle</name> 
       <value>true</value> 
     </parameter> 


     <!-- You have to set this value, otherwise even though you've asked 
      connections to be tested while idle,the idle evicter thread 
      will never run --> 
     <parameter> 
       <name>timeBetweenEvictionRunsMillis</name> 
       <value>10000</value> 
     </parameter> 


     <!-- Don't set this too high. A few minutes or even fraction of a minute 
      is sometimes okay here, it depends on your application and how much 
      spikey load it will see --> 
     <parameter> 
       <name>minEvictableIdleTimeMillis</name> 
       <value>60000</value> 
     </parameter> 
     <!-- Username and password used when connecting to MySQL. Replace myuser 
      and mypassword with your username/password for the database user. --> 
     <parameter> 
       <name>"username"</name> 
       <value>"password"</value> 
     </parameter> 
     <parameter> 
       <name>"username"</name> 
       <value>"password"</value> 
     </parameter> 


     <!-- Class name for the Connector/J driver --> 
     <parameter> 
       <name>driverClassName</name> 
       <value>com.mysql.jdbc.Driver</value> 
     </parameter> 
     <!-- The JDBC connection url for connecting to MySQL, notice that if 
      you want to pass any other MySQL-specific parameters you should 
      pass them here in the URL, setting them using the parameter 
      tags above will have no effect, you will also need to use &amp; 
      to separate parameter values as the ampersand is a reserved 
      character in XML. Replace my_database with your database name. --> 
     <parameter> 
       <name>url</name> 
       <value>jdbc:mysql://localhost:3306/gimnasioBackend</value> 
     </parameter> 


     </ResourceParams> 
     </Context> 
</webapps> 


我加入這個上面的配置到Tomcat,但仍無法連接。我開始對這個問題有點絕望。

回答

0

經過一週的努力解決這個問題後,我在一位同事和Tomcat doc的幫助下找到了解決方案。
的配置在context.xml文件提出,內容如下:

<Resource name="jdbc/turismoBackend" auth="Container" type="javax.sql.DataSource" 
       maxTotal="100" maxIdle="30" maxWaitMillis="10000" 
       username="youruser" password="yourpassword" driverClassName="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://localhost:3306/yourdb"/> 

這是值得的通知,從根本不同的用戶,以創建爲Tomcat來訪問MySQL,與所有特權和也授予選項。像這樣:

CREATE USER '[yourUsername]'@'localhost' IDENTIFIED BY '[yourPassword]'; 
GRANT ALL PRIVILEGES TO [yourUsername]@[yourServer] IDENTIFIED BY [yourPassword] WITH GRANT OPTION; 

就是這樣!一切都在運行。

0

從堆棧跟蹤中提取;

Missing type or column for column[descripciono_descripciones] on domain[Ejercicios] 

如果列名不與用於駝峯強調格式約定匹配,那麼人們通常會得到從冬眠MappingException。如果是這樣的話,則映射必須由使用column:

例如,airportCode column: 'AIRPORT_CD'

解決可能會解決部署問題,以及在mappings部分manully完成(考慮有沒有其他的道路塊) 。

+0

感謝您的回覆。那麼,在我解決這個錯誤之後,我不需要製作一個連接器或類似的東西來連接Tomcat和MySQL? – pamobo0609

+1

@ pamobo0609通常,不是。你應該期望的是,從操作系統中正確設置tomcat,你已經被告知任何有關它的信息以及要配置什麼數據源。這會是最後一個錯誤嗎?也許不是,如果這是你自己的生活環境測試意義。 – cfrick

+0

我已經做了一個小配置,我會在上面發佈它。 – pamobo0609