Я в первый раз просмотрел, но в первом посте у вас файл server.xml по моему не корректный. Тег <context>...</context>(т. е. то что у вас между комментариями <!-- Начало --> и <!-- Конец вставки-->) должен располагаться внутри <host>...</host>. Внутри тега <GlobalNamingResources>...</GlobalNamingResources> располагаются описания глобальных ресурсов, т. е. ресурсов которые доступны всем приложениям на этом сервере. Плюс само содержимое <Resource>...</Resource> так по моему описывалось для старых версий Tomcat. Вообще по той ссылке, что я привел всё достаточно доступно расписано.  Итак 3 варианта: 1. Глобальный ресурс: server.xml
| Код | <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <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"/>
<Resource name="jdbc/quickstart" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" url="jdbc:mySql://localhost/quickstart" driverClassName="org.gjt.mm.mysql.Driver" username="quickstart" password="secret" maxWait="3000" maxIdle"100" maxActive="10" /> </GlobalNamingResources> <Service name="Catalina"> <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443"/> <Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443"/> <Engine defaultHost="localhost" name="Catalina"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"> <context path="/quickstart" /> </Host> </Engine> </Service> </Server>
|
2. Ресурс приложения, определён в server.xml:
| Код | <?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <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"/> </GlobalNamingResources> <Service name="Catalina"> <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8080" redirectPort="8443"/> <Connector enableLookups="false" port="8009" protocol="AJP/1.3" redirectPort="8443"/> <Engine defaultHost="localhost" name="Catalina"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"> <context path="/quickstart"> <Resource name="jdbc/quickstart" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" url="jdbc:mySql://localhost/quickstart" driverClassName="org.gjt.mm.mysql.Driver" username="quickstart" password="secret" maxWait="3000" maxIdle"100" maxActive="10" /> </context> </Host> </Engine> </Service> </Server>
|
3. Ресурс приложения, определен в файле context.xml:
| Код | <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/quickstart" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" url="jdbc:mySql://localhost/quickstart" driverClassName="org.gjt.mm.mysql.Driver" username="quickstart" password="secret" maxWait="3000" maxIdle"100" maxActive="10" /> </Context>
|
Ничего не могу сказать по поводу атрибута factory, у меня его нет нигде, работает без него.
Цитата(Saboteur @ 5.12.2007, 16:13 ) | | Создал Context.xml и положил его в ту же папку гдк лежит у меня web.xml |
файл context.xml у меня находится в папке META-INF, она в свою очередь в корне приложения (т. е. на одном уровне с WEB-INF)
Для всех трёх вариантов содержимое web.xml одинаково (вы его уже указали), по крайней мере там, где ссылка на ресурс:
| Код | <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" 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"> <display-name>SampleDBHibernate</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <resource-ref> <res-ref-name>jdbc/quickstart</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
|
Содержимое ссылки <res-ref-name>...</res-ref-name> должно совпадать с именем ресурса, определённого по одному из трёх указанных методов, в данном случае jdbc/quickstart
Не знаю как точно в Hibernate должно определяться JNDI имя DataSource, но предполагаю, что Hibernate не должен знать ничего о том окружении в котором он работает (имеется ввиду сервер приложения), поэтому скорей всего, JNDI имя DataSource в файле конфига Hibernate должно быть специфичным для конкретного контейнера то бишь для Tomcat файл Hibernate.cfg.xml выглядит примерно так:
| Код | <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.datasource">java:/comp/env/jdbc/quickstart</property> <!-- Пробуйте --> <property name="show_sql">false</property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property> <!-- Mapping files --> <mapping resource="Cat.hbm.xml"/> </session-factory> </hibernate-configuration>
|
Исправил java:/quickstart на java:/comp/env/jdbc/quickstart Ну вот вроде бы и всё, разбирайтесь, пробуйте. Прошу поправить, если где ошибся. |