Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JNDI+Servlet, не подключает к БД 
:(
    Опции темы
StandartenFuhrer
Дата 14.4.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Работаю с JBoss 4.03

Сам "сервлет работает" деплоится... но как токо пытаюсь приконектится через ДатаСоурс-не фурычит...
Цитата

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.NullPointerException
    web.GetData.service(GetData.java:61)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.




Сам "сервлетик"

Код

package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;


public class GetData extends HttpServlet {
    String q="Select * from USRTBL";
        ResultSet  rs;
        Statement stmp;
        Connection con;
        DataSource ds;
        InitialContext context=null;
         
         void getConnection() throws  NamingException, SQLException
         {    
            context  = new InitialContext();
            ds = (DataSource)context.lookup("java:/FIrebirdDS"); 
            con = ds.getConnection("SYSDBA","masterkey");
            stmp=con.createStatement(); 
            rs=stmp.executeQuery(q);
         }
         
        public void service(HttpServletRequest request, 
           HttpServletResponse response)
                   throws ServletException, IOException {
         try {
                getConnection();
            } catch (NamingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
              PrintWriter writer = response.getWriter();
              writer.println(request.getParameter("int"));
              
              try {
               rs.absolute(0);
                    writer.println(rs.getInt("ID"));
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
              writer.close();
             }
         }


в деплое firebird-ds.xml создан... все по примеру...даж JNDI-name не менял... помогите разобратся пожалуйста... 


Это сообщение отредактировал(а) StandartenFuhrer - 15.4.2007, 13:24
PM MAIL   Вверх
StandartenFuhrer
Дата 15.4.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Да в чем может быть проблема... я уже все перепробовал...  smile  запарилсо... мне уже начхать на результат...я хочю понят пчему не пашет зараза... все млять по примеру...
PM MAIL   Вверх
zera
Дата 15.4.2007, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 19.1.2006
Где: saint-petersburg

Репутация: 1
Всего: 9



StandartenFuhrer, а драйвер бд положили в /server/yourservername/lib/? больше ничего предположить не могу, без стектрейса.
PM MAIL   Вверх
tux
Дата 15.4.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



У тебя в стектрейсе написано:
Цитата

web.GetData.service(GetData.java:61)

а в классе всего 60 строк. Видимо что-то недоложил. 
Вот в этой строке:
Код

con = ds.getConnection("SYSDBA","masterkey");

имя и пароль задавать не нужно. 
Определи все-таки в какой строке кидается исключение. Скорее всего в JNDI нет такого имени источника данных. А не быть его там может быть только потому что у тебя источник данных не развернулся. Поищи в логе, все ли нормально прошло у FIrebirdDS, нет ли там исключений. Действительно, как говорил zera, может не хватать jdbc-драйвера в либах JBoss.
PM MAIL Skype GTalk Jabber YIM   Вверх
StandartenFuhrer
Дата 15.4.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Я туда кинул firebirdsql-full.jar или енто не то?
Чуток подшаманил... и теперь сервлетработает но выдает SQLExeption... лог сам большой... в чем могит быть трабл...
Код

protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
        throws ServletException, IOException {
    // TODO Auto-generated method stub
    PrintWriter out=arg1.getWriter();
 try{
    InitialContext context = new InitialContext();
    DataSource ds = (DataSource)context.lookup("java:/FBDB"); 
    Connection con = ds.getConnection();
    Statement st=con.createStatement();
    ResultSet rs=st.executeQuery("select * from USRTBL");
    rs.absolute(1);
    out.println(rs.getString("USRNAME"));
    out.println("Vvova2");
     } catch (NamingException e) {
        // TODO Auto-generated catch block
      out.println("A1");
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        out.println("A2");
        e.printStackTrace();
    }
 finally{
 
 out.println("SS");
 out.close();}
}        
}



Ошибка
Код

21:24:58,562 INFO  [STDOUT] org.jboss.util.NestedSQLException: No ManagedConnect
ions available within configured blocking timeout ( 30000 [ms] ); - nested throw
able: (javax.resource.ResourceException: No ManagedConnections available within
configured blocking timeout ( 30000 [ms] ))
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.adapter.jdbc.WrapperDataSo
urce.getConnection(WrapperDataSource.java:79)
21:24:58,562 INFO  [STDOUT]     at web.GetData.service(GetData.java:30)
21:24:58,562 INFO  [STDOUT]     at javax.servlet.http.HttpServlet.service(HttpSe
rvlet.java:810)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterCha
in.internalDoFilter(ApplicationFilterChain.java:252)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterCha
in.doFilter(ApplicationFilterChain.java:173)
21:24:58,562 INFO  [STDOUT]     at org.jboss.web.tomcat.filters.ReplyHeaderFilte
r.doFilter(ReplyHeaderFilter.java:81)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterCha
in.internalDoFilter(ApplicationFilterChain.java:202)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.ApplicationFilterCha
in.doFilter(ApplicationFilterChain.java:173)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.StandardWrapperValve
.invoke(StandardWrapperValve.java:213)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.StandardContextValve
.invoke(StandardContextValve.java:178)
21:24:58,562 INFO  [STDOUT]     at org.jboss.web.tomcat.security.CustomPrincipal
Valve.invoke(CustomPrincipalValve.java:39)
21:24:58,562 INFO  [STDOUT]     at org.jboss.web.tomcat.security.SecurityAssocia
tionValve.invoke(SecurityAssociationValve.java:159)
21:24:58,562 INFO  [STDOUT]     at org.jboss.web.tomcat.security.JaccContextValv
e.invoke(JaccContextValve.java:59)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.StandardHostValve.in
voke(StandardHostValve.java:126)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.valves.ErrorReportValve.i
nvoke(ErrorReportValve.java:105)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.core.StandardEngineValve.
invoke(StandardEngineValve.java:107)
21:24:58,562 INFO  [STDOUT]     at org.apache.catalina.connector.CoyoteAdapter.s
ervice(CoyoteAdapter.java:148)
21:24:58,562 INFO  [STDOUT]     at org.apache.coyote.http11.Http11Processor.proc
ess(Http11Processor.java:856)
21:24:58,562 INFO  [STDOUT]     at org.apache.coyote.http11.Http11Protocol$Http1
1ConnectionHandler.processConnection(Http11Protocol.java:744)
21:24:58,562 INFO  [STDOUT]     at org.apache.tomcat.util.net.PoolTcpEndpoint.pr
ocessSocket(PoolTcpEndpoint.java:527)
21:24:58,562 INFO  [STDOUT]     at org.apache.tomcat.util.net.MasterSlaveWorkerT
hread.run(MasterSlaveWorkerThread.java:112)
21:24:58,562 INFO  [STDOUT]     at java.lang.Thread.run(Thread.java:595)
21:24:58,562 INFO  [STDOUT] Caused by: javax.resource.ResourceException: No Mana
gedConnections available within configured blocking timeout ( 30000 [ms] )
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.Internal
ManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:246)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.JBossMan
agedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:529)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.BaseConn
ectionManager2.getManagedConnection(BaseConnectionManager2.java:410)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.TxConnec
tionManager.getManagedConnection(TxConnectionManager.java:342)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.BaseConn
ectionManager2.allocateConnection(BaseConnectionManager2.java:462)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.connectionmanager.BaseConn
ectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.
java:894)
21:24:58,562 INFO  [STDOUT]     at org.jboss.resource.adapter.jdbc.WrapperDataSo
urce.getConnection(WrapperDataSource.java:73)
21:24:58,562 INFO  [STDOUT]     ... 21 more




Это сообщение отредактировал(а) StandartenFuhrer - 15.4.2007, 21:27
PM MAIL   Вверх
tux
Дата 15.4.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Исключение говорит о том, что за 30 секунд в пуле соединений не появилось ни одного свободного соединения. Два вопроса: сколько одновременных запросов было запущено; 2) как настроен пул соединений?
PM MAIL Skype GTalk Jabber YIM   Вверх
StandartenFuhrer
Дата 16.4.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Честно...я раз загрузил сервлет и ждал... а пул...я не знаю... у меня токо лекции препода+ то что нарыл на форуме... маловато пока будет
firebird1-ds.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: firebird-ds.xml 41641 2006-03-02 17:41:11Z dimitris $ -->
 <!-- ==================================================================== -->
<!-- New ConnectionManager setup for firebird dbs using jca-jdbc xa driver-->
  <!-- Build jmx-api (build/build.sh all) and view for config documentation -->
<!-- ====================================================================-->
<datasources>
<local-tx-datasource>
<jndi-name>FBDB</jndi-name>    
<connection-url>jdbc:firebirdsql://localhost/D:/users.fdb</connection-url>    
<driver-class>org.firebirdsql.jdbc.FBDriver</driver-class>
<user-name>sysdba</user-name>    
<password>masterkey</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
 <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
 <metadata>
<type-mapping>Firebird1 SQL</type-mapping>
 </metadata>
</local-tx-datasource>
</datasources>



Это сообщение отредактировал(а) StandartenFuhrer - 16.4.2007, 00:09
PM MAIL   Вверх
StandartenFuhrer
Дата 16.4.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Спасибо вам огромное... за внимание и терпение...разобрался... работает... скоро бу вопросы задавать как апдейт и инсерт делать.... smile  ...но то потом...
PM MAIL   Вверх
tux
Дата 16.4.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Пока я писал ответ, у тебя уже все получилось. Ну оставлю на всякий случай, вдруг еще что-то чем-то поможет.

Возможные проблемы:
1. соединение с базой данных не закрывается. Если всего один раз вызывал, это конечно не должно быть проблемой. Но есть вероятность что сам пул кидает такое исключение когда обнаруживает, что соединение долго не закрывается. У тебя в секции finally должно быть что-то такое:
Код

finally{
    con.close();
}

2. возможно дефолтные настройки источника данных такие, что не дают работать. Попробуй в описании источника данных поставить такие параметры:
Код

<prepared-statement-cache-size>50</prepared-statement-cache-size>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<max-idle-timeout>0</max-idle-timeout>
<blocking-timeout-millis>30000</blocking-timeout-millis>
<idle-timeout-minutes>15</idle-timeout-minutes>
<track-statements>false</track-statements>

3. в описании источника данных название маппинга типов кажется неправильно:
Код

<type-mapping>Firebird1 SQL</type-mapping>

По крайней мере в версии 4.0.5 маппинг называется Firebird. Загляни в файл ${JBOSS_HOME}\server\default\conf\standardjbosscmp-jdbc.xml, там есть примерно такой фрагмент:
Код

<type-mapping>
    <name>Firebird</name>
    ...
</type-mapping>

Вот название маппинга в описании источника должно соответствовать имени в тэгах <name>.
PM MAIL Skype GTalk Jabber YIM   Вверх
superVad
Дата 16.4.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 1
Всего: 15



Тоже - на всякий случай.
У меня работаеть так:

firebird-ds.xml
Код

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

  <!-- $Id: firebird-ds.xml,v 1.7.2.1 2006/03/02 17:40:45 dimitris Exp $ -->
  
  <!-- ==================================================================== -->
  <!-- New ConnectionManager setup for firebird dbs using jca-jdbc xa driver-->
  <!-- Build jmx-api (build/build.sh all) and view for config documentation -->
  <!-- ==================================================================== -->

<connection-factories>

  <tx-connection-factory>
    <jndi-name>FIrebirdDS</jndi-name>
    <xa-transaction/>
    <track-connection-by-tx/>    
    <rar-name>jaybird-2.1.0.rar</rar-name>
    <connection-definition>javax.sql.DataSource</connection-definition>    
    <config-property name="Database" type="java.lang.String">10.80.13.37/3050:D:\eclipse\DocTurn\DB\docdb.gdb</config-property>
    <user-name>sysdba</user-name>
    <password>pass</password>
    <!--additional properties. only use one way of setting tx isolation, please
    <config-property name="TransactionIsolation"></config-property>
    <config-property name="TransactionIsolationName">TRANSACTION_READ_COMMITTED</config-property>
    <config-property name="BlobBufferLength"></config-property>
    <config-property name="Encoding">UNICODE_FSS</config-property>
    -->
    <min-pool-size>5</min-pool-size>
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
    -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool 
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
    -->
    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->    
    <metadata>
      <type-mapping>Firebird</type-mapping>
    </metadata>    
  </tx-connection-factory>

</connection-factories>



jaybird-2.1.0.rar - кидаю прямо в deploy

dataSource получаю так:

Код

    Context contextI = new InitialContext();
    Object obj = contextI.lookup("java:FIrebirdDS");
    dataSource = (DataSource)PortableRemoteObject.narrow(obj,DataSource.class);
    connection = dataSource.getConnection();
...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.