我已经在我的 AWS Linux 微型实例上安装了 Tomcat 7 和 MySQL 5.5。我试图弄清楚如何配置 Tomcat 7 以与 MySQL 通信,但没有运气。我一直是 Glassfish 用户,所以通过 GUI 操作非常简单,但是对于 Tomcat,我不知道如何配置它。
我查看了 Tomcat 7 上的 Apache 文档,但发现自己更加困惑。我不知道需要编辑的文件在哪里,也不知道用什么来编辑它们。我需要安装 MySQL 驱动程序吗?我使用 JDBC 还是 JNDI?我的应用是使用 Hibernate 的 Tapestry5 应用,所以我不确定这是否重要。
有没有人知道一个很好的指南或者可以为我提供如何做到这一点的示例代码?只是为了记录,我只有几个小时在 Linux 的车轮后面,所以当涉及到任何与 Linux 相关的东西时,我都非常绿色。
更新
我找到了以下默认配置
<!-- <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.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, boolean, HibernateSessionSource, Session, 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].