0

このWeb サイトを通じて、Tomcat の接続プールをセットアップする方法について学習しています。そこで、context.xml ファイルを作成し、META-INF ディレクトリに配置しました。これは私が今持っているものです。

<?xml version="1.0" encoding="UTF-8"?>

<Context>
    <Resource name="jdbc/gmustudent" auth="Container"
        type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
        username="root" password="root"
        url="jdbc:mysql://localhost:3306/official"
        maxActive="100" maxIdle="10" minIdle="5" initialSize="5" maxWait="10000" />
</Context>

ただし、ファクトリのクラス名を指定したいと思います。しかし、この属性を追加するたびに

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

コンソールに大量のエラーが表示されます。順不同でいくつか紹介します。

WARNING: Failed to register in JMX: javax.naming.NamingException: com.mysql.jdbc.Driver
WARNING: Unexpected exception resolving reference java.sql.SQLException: com.mysql.jdbc.Driver
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:gmustudent' did not find a matching property.

したがって、工場を指定しないと、サイトは問題なく機能します。しかし、私が行うとエラーがスローされ、何も機能しません。スタックオーバーフローについて調査したところ、この投稿が見つかりました。このため、Tomcat のバージョンを 7.0.11 から最新のものに変更しましたが、まだエラーが発生しています。そのため、server.xml ファイルのファクトリとの何らかの衝突である可能性があると考えましたが、その呼び出しを行う経験はほとんどありません。しかし、ここに私のserver.xmlファイルのリソースがあります

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

これは私の context.xml ファイルのファクトリと衝突していますか? それとも私はここで完全に間違っていますか?一言で言えば、context.xml ファイルで大きなエラーを発生させずにファクトリを指定する方法を見つけたいと思います。読んでくれてありがとう。

4

1 に答える 1

0

必要に応じて、Spring を使用して Web アプリで接続全体を実際に管理できます。PostgreSQL を使用した例を次に示します。

<?xml version="1.0" encoding="windows-1252"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"/>
        <property name="url" value="jdbc:postgresql://localhost/mydb"/>
        <property name="username" value="postgres"/>
        <property name="password" value="postgres"/>
    </bean>
</beans>

それを WEB-INF/classes に入れて、次を使用してロードできます。

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/mycontext.xml");

この時点で、Tomcat に管理させることさえ気にしません。

于 2012-10-24T15:35:44.997 に答える