2013-03-24 44 views
0

我在我的AWS Linux微型实例上安装了Tomcat 7和MySQL 5.5。我试图找出如何配置Tomcat 7与MySQL进行通信,但没有运气。我一直是Glassfish的用户,所以通过GUI很简单,但是对于Tomcat,我不知道如何配置它。AWS Linux使用tomcat7配置mysql

我看过Tomcat 7上的Apache文档,但发现自己更加困惑。我不知道我需要编辑哪些文件,我不知道如何编辑它们。我是否需要安装MySQL驱动程序?我使用JDBC还是JNDI?我的应用程序是一个使用Hibernate的Tapestry5应用程序,所以我不确定这是否重要。

有没有人知道一个很好的指导或可以提供我如何做到这一点的示例代码?只是为了记录,我只有几个小时的Linux时间,所以当涉及到与Linux相关的任何事情时,我都非常青睐。

UPDATE

我发现

<!-- <Resource name="UserDatabase" auth="Container" 
       type="org.apache.catalina.UserDatabase" 
       description="User database that can be updated and saved" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 
--> 

我使用Hibernate和在hibernate.cfg.xml我使用下面的默认配置下

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.datasource">jdbc/mydatabase</property> 

我评论了上述资源并添加了以下内容,但这似乎也不起作用。我也注意到我不再有权访问tomcat管理器。

<Resource type="javax.sql.DataSource" 
      name="jdbc/mydatabase" 
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost:3306/mysql" 
      username="root" 
      password="password" 
/> 

添加以下到context.xml文件

<ResourceLink type="javax.sql.DataSource" 
       name="jdbc/mydatabase" 
       global="jdbc/mydatabase" 

有谁知道我在做什么错这个配置?

我得到以下异常

根源

HTTP Status 500 - java.lang.RuntimeException: Exception constructing service 'ValueEncoderSource': Error invoking service 

贡献法 org.apache.tapestry5.hibernate.HibernateModule.contributeValueEncoderSource(MappedConfiguration, 布尔,HibernateSessionSource,会议, TypeCoercer,PropertyAccess, LoggerSource):构造异常的服务 'HibernateSessionSource':调用构造函数的错误public org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl(org.slf4j.Logger,java.util.List中): 无法找到数据源

javax.naming.NameNotFoundException: Name [jdbc/mydatabase] is not bound in this Context. Unable to find [jdbc]. 

回答

0

我已经配置了使用Tomcat 6 JNDI,但我不记得确切的配置设置,但有一件事是肯定你需要使用JNDI。

+0

@JeenavDongre您可能不知道这个答案,但对于为什么我需要使用tomcat将配置设置添加到我的WEB-INF/web.xml中,但对于Glassfish而言,这是不必要的?在Glassfish中,您可以配置JDBC以通过它的GUI在数据库中工作,除了hibernate.cfg.xml中的数据源以外,应用程序中没有设置。我使用Jetty进行本地开发,所以我很关心应用程序中的tomcat设置可能会破坏运行的码头。我不确定情况如何,但我的担忧。 – 2013-03-25 12:36:09

+0

首先,您不会有任何种类的GUI来手动配置您的数据库。这是一个例子。 – 2013-03-25 12:48:55

0
1. Context configuration 

Configure the JNDI DataSource in Tomcat by adding a declaration for your 
resource to your Context. 

Open the context.xml which is located at the Tomcat configuration (conf) folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat 5.5\conf 

Add the following Resource entry with your database properties. 

</Context> 

-------------------------------------------- 

--------------------------------------------- 

<Resource name="jdbc/Foofys" auth="Container" type="javax.sql.DataSource" 

maxActive="100" maxIdle="30" maxWait="10000" 

username="root" password="pradeep" driverClassName="com.mysql.jdbc.Driver" 

url="jdbc:mysql://localhost:3306/foofys"/> 

</Context> 

Bolded attributes should be as per your database configurations. 

2. web.xml configuration 

Open the context.xml which is located at the Tomcat configuration (conf) folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat 5.5\conf 

<?xml version="1.0" encoding="ISO-8859-1"?> 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/ 
j2ee/web-app_2_4.xsd" 

version="2.4"> 

<resource-ref> 

<description>DB Connection</description> 

<res-ref-name>jdbc/Foofys</res-ref-name> 

<res-type>javax.sql.DataSource</res-type> 

<res-auth>Container</res-auth> 

</resource-ref> 

----------------------------------------------- 

------------------------------------------------- 

</web-app> 

3. Copy the My SQL database driver into the tomcat common 
libraries folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib 

mysql-connector-java-5.1.10.jar 
+0

谢谢Jeevan,直到今晚我都无法对此进行测试,但我还有一些更快速的问题。我假设web.xml是位于WEB-INF下的应用程序内的XML文件?你会碰巧知道为什么在web.xml中为tomcat需要resource-ref,但在glassfish中不需要?另外,我注意到你在context.xml而不是server.xml中处理数据库连接,有什么不同?今天晚上我可能会有更多的问题后,给这个旋转,谢谢。 – 2013-03-25 13:05:23

0

我在一个项目中遇到了类似的问题。我忘了将jdbc mysql连接器放在apache tomcat的lib文件夹中。 Mysql JDBC Connector

后来我将该文件添加到lib文件夹并摆脱了异常。