Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Настройка dataSource


Автор: Zamuta 8.3.2007, 16:40
Всем привет...

Понимаю что вопрос изрядно битый, прочитал все ветки на форуме, но возник вопрос.

Стоит netbeans5.5+tomcat5.5. Раньше юзал proxool, для чего в META-INF/context.xml писал 
Код

<Resource auth="Container"
 factory="org.logicalcobwebs.proxool.ProxoolDataSource"
 name="jdbc/dataSource"
 password="pass"
 proxool.alias="test"
 proxool.driver-class="com.mysql.jdbc.Driver"
 proxool.driver-url="jdbc:mysql://localhost:3306/registration" 
 type="javax.sql.DataSource" username="root"/>

И всё работало.
Потом решил опробовать common-dbcp и c3p0 , но в доках пишут, что настройки нужно хранить в server.xml. Это критично или то же самое можно хранить и в META-INF/context.xml ? 

И если пользуюсь админ панелью томката, то не вижу настроек сделанных в server.xml, а если делаю эти настройки вручную, то не вижу их в админ панели. 

Вообще расскажите META-INF/context.xml имеет отшение к настройкам в server.xml ?

Спасибо...

Автор: tux 8.3.2007, 16:56
Разница в том, что настройки в context.xml хранятся внутри приложения, в случае server.xml - в конфигурации сервера. Соответственно, чтобы поменять настройки в context.xml, придется пересобрать приложение. Вот и вся разница. Можешь источник данных с dbcp определять хоть в context.xml, хоть в server.xml.

Автор: VSergeyV 9.3.2007, 14:11
а как быть при написании веб сервисов, допустим вот сейчас я налаживаю dbcp/интегрированный в Tomcat/ под AXIS2, AXIS2 крутится под Томкетом

Автор: tux 9.3.2007, 14:34
Цитата(VSergeyV @  9.3.2007,  14:11 Найти цитируемый пост)
а как быть при написании веб сервисов, допустим вот сейчас я налаживаю dbcp/интегрированный в Tomcat/ под AXIS2, AXIS2 крутится под Томкетом 

И в чем проблема?

Автор: VSergeyV 9.3.2007, 17:49
При
Код

Connection connection = ds.getConnection();


выскакивает экспешион
Cannot create JDBC driver of class '' for connect URL 'null'

вроде делаю все правильно, может все таки нельзя использовать dataSource из веб сервиса?

Автор: tux 9.3.2007, 20:24
Цитата(VSergeyV @  9.3.2007,  17:49 Найти цитируемый пост)
вроде делаю все правильно

Значит все работает, тебе показалось.

Цитата(VSergeyV @  9.3.2007,  17:49 Найти цитируемый пост)
может все таки нельзя использовать dataSource из веб сервиса? 

И как ты себе это представляешь? Томкат получает запрос на выдачу источника данных и лезет вверх по стэктрейсу пытаясь определить не из веб-сервиса ли к нему постучались. Так что-ли?

context.xml:
Код

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

    <Resource name="jdbc/postgres" auth="Container"
        type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://127.0.0.1:5432/db" username="user"
        password="pwd" maxActive="20" maxIdle="10" maxWait="-1" />

</Context>


web.xml:
Код

<!DOCTYPE web-app 
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
    <resource-ref>
        <res-ref-name>jdbc/postgres</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>


Код:
Код

InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/postgres");

Так работает. Чего там у тебя понятия не имею, код же ты не приводишь и как настроено не говоришь. Известно только что все правильно.

Автор: VSergeyV 13.3.2007, 15:20
Накидал примерчик, чисто веб приложение //не сервис//, оно конечно заработало smile , 

мой context.xml из META-INF веб сервиса
Код

<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" >
    <Resource name="jdbc/TestDB" auth="Container"
              type="javax.sql.DataSource"
              maxActive="100" maxIdle="30" maxWait="10000"
              username="XXXXXXX"
              password="XXXXXXX"
              driverClassName="com.sybase.jdbc2.jdbc.SybDriver" url="jdbc:sybase:Tds:000.000.000.000:5000/dzk_dev_local"/>
</Context>


мой web.xml из WEB-INF веб сервиса
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<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">
  <description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
</web-app>


код
Код

DataSource ds=null;
Context ctx = new InitialContext();
if(ctx == null )
throw new Exception("Boom - No Context");
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
if(ds == null )
throw new Exception("Boom - No Datasource");
Connection conn=ds.getConnection();
Statement stmt=conn.createStatement();
ResultSet    rs = stmt.executeQuery(
 ...


но в веб сервисе на AXIS2 (v 1.1.1)  при
Код

Connection connection = ds.getConnection();


вылетает Cannot create JDBC driver of class '' for connect URL 'null'

пробал contex.xml помещать и в META-INF AXIS2, и определять ресурс в server.xml Томкета, а также в services.xml своего проекта, результат один, смотрел форум по веб сервисам подобного не увидел, просто 
http://forum.vingrad.ru/topic-91754/hl/cannot%2Cand%2Ccreate%2Cand%2Cjdbc%2Cand%2Cdriver%2Cand%2Cclass%2Cand%2C%26/index.html#

http://forum.vingrad.ru/topic-135761/hl/cannot%2Cand%2Ccreate%2Cand%2Cjdbc%2Cand%2Cdriver%2Cand%2Cclass%2Cand%2C%26/index.html#

У когонибудь хотя бы просто из веб сервиса удается получать доступ к DBCP через JNDI?



Автор: VSergeyV 14.3.2007, 11:54
Поставил Tomcat 6.0.10 (до этого был 5.5.12), также не работало, потом поставил JDK1.6.0 - заработало smile  
Это приятно и не приятно smile , пробовал запускать под Tomcat 5.5.12 + JDK1.6.0 тоже не заработало, все же проблема наверно с загрузкой классов? или/и доступ к контексту из вебсервиса?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)