0

我已经在我的 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].
4

3 回答 3

0

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

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

于 2013-09-20T06:27:30.553 回答
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
于 2013-03-25T12:50:03.530 回答
0

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

于 2013-03-25T07:09:10.207 回答