Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу подсоединится с DB2 / 5 сообщений из 5, страница 1 из 1
13.09.2005, 16:27
    #33266890
Не могу подсоединится с DB2
В classpath лежат db2java.jar и db2jcc.jar

ИсХодник:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
	 static   void  testDB2(){
		 try  {
			Driver driver = (Driver) Class .forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
			DatabaseConnectivity connectivity =  new  DatabaseConnectivity(); 
			connectivity.connectDB(
				driver,
				"jdbc:db2://172.16.200.18:5000/first",
				"icet",
				"icewin");
			System.out.println("connected");
			connectivity.closeConnection();
			System.out.println("disconnected");
			System.out.println("all right");
		}  catch  (Exception e) {
			e.printStackTrace();
		}
	}

Выдается ошибка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
java.sql.SQLException: java.lang.UnsatisfiedLinkError: no db2jdbc in java.library.path
	at COM.ibm.db2.jdbc.app.DB2Driver.<init>(DB2Driver.java: 240 )
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0( Native  Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: 39 )
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java: 27 )
	at java.lang.reflect.Constructor.newInstance(Constructor.java: 274 )
	at java.lang. Class .newInstance0( Class .java: 308 )
	at java.lang. Class .newInstance( Class .java: 261 )
	at Tester.testDB2(Tester.java: 229 )
	at Tester.main(Tester.java: 251 )

В чем проблема? Не пойму...
...
Рейтинг: 0 / 0
14.09.2005, 08:33
    #33267764
risfek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подсоединится с DB2
ЕвгенийJDBC драйвер идет в составе клиента и сервера DB2. При установке нужно просто выбрать эту опцию.

1. DB2 JDBC Type 2 driver (Application Driver)
Обычно лежит в библиотеке db2java.zip.
Транслирует вызовы JDBC в native.Для работы ему естественно нужен сам клиент DB2.
JDBC 1 Connections : COM.ibm.db2.jdbc.app.DB2Driver
JDBC 2 Connections : COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource
COM.ibm.db2.jdbc.DB2DataSource
COM.ibm.db2.jdbc.DB2XADataSource
Преимущества:
а) теоретически самый шустрый.
б) поддерживает пул соединений.
Недостатки:
а) требует наличия клиента DB2.

2. DB2 JDBC Type 3 driver (Applet/Net Driver)
Обычно лежит в библиотеке db2java.zip.
Драйвер для "тонких" клиентов. Состоит из клиента и сервера JDBC.
Во время запуска открывает соединение на JDBC-сервер (db2jd). JDBC запросы передаются серверу, а там
преобразуются в запросы к DB2.
JDBC 1 Connections : COM.ibm.db2.jdbc.net.DB2Driver
JDBC 2 Connections : COM.ibm.db2.net.DB2ConnectionPoolDataSource
COM.ibm.db2.net.DB2DataSource
Преимущества:
а) Минимальные настройки у клиента. Легкий.
Недостатки:
а) Нужно запускать дополнительный сервис на сервере.

3. DB2 JDBC Type 4 driver (Universal Driver)
Обычно лежит в библиотеке db2jcc.jar.
Появился в DB2 версии 8.
Драйвер для "тонких" клиентов.
Полностью реализует DRDA протокол на уровне Java (и может подключаться к любому серверу DB2). Т.е.
является платформо-независимым. Дополнительных библиотек не требует.
JDBC 1 Connections : com.ibm.db2.jcc.DB2Driver
JDBC 2 Connections : com.ibm.db2.jcc.DB2SimpleDataSource
Преимущества:
а) Полностью самодостаточный драйвер.
Недостатки:
а) Теоретически более медленная скорость работы.
б) Отсутствие пула соединений.настройка для томката.
tomcat_home\common\lib
должен лежать файлик для клиента
db2java.jar

Получение Connection
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
a.jsp
<%@ page  import ="java.sql.*"%>
<%@ page contentType="text/html; charset=windows-1251" language="java" %>
<html>
<head>
<title></title>
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<body>
<%
    Driver driver = (Driver) Class .forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
    DriverManager.registerDriver(driver);
    Connection conn = DriverManager.getConnection("jdbc:db2:DBALIAS", "user", "pass");
    String sql= "select NAME from SYSIBM.SYSTABLES";
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();
     while (rs.next()){
%>
<%=rs.getString("NAME")%><br>
<% }
%>
</body>
</html>
но
так лучше не делать(как минимум не в страничке)


для подключения пула
в tomcat_home\common\lib
должен лежать naming-factory-dbcp.jar
(у меня шел с томкатом
есть отдельно там по моему 3 jar файлика нужно
commons-collections-3.1.zip
commons-dbcp-1.2.1.zip
commons-pool-1.2.zip)

server.xml(лучше вынести в tomcat_home\conf\Catalina\localhost\webMod.xml)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<Context path="/webMod" docBase="webMod" debug="5" reloadable="true">
<Resource name="DB2DB"
auth="Container" 
type="javax.sql.DataSource" 
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
username="user"
password="pass"
driverClassName="COM.ibm.db2.jdbc.app.DB2Driver"
url="jdbc:db2:DBALIAS"
maxWait="-1" 
removeAbandoned="true" 
removeAbandonedTimeout="60" 
logAbandoned="true"/>
</Context>
получение Connection

Код: plaintext
1.
2.
         Context ctx =  new  InitialContext();
          DataSource ds = (DataSource)ctx.lookup("java:comp/env/DB2DB");
          Connection conn = ds.getConnection();
...
Рейтинг: 0 / 0
14.09.2005, 09:14
    #33267824
LiQuid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу подсоединится с DB2
А я воаще проще делаю.
Зачем всегда в classpath-е указывать.
Возьми и раархивируй драйвер ДБ2
Скопируй папку com в classes папку твоего проекта.
Потом напиши прогармму:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
 package  izm_co1;

 import  java.sql.*;
 import  java.io.*;
 import  java.util.Properties;

 public   class  DB2Connector {
   private   static  String drivers;
   private   static  String user;
   private   static  String password;
   private   static  String url;
   private   static  String dbfPath;

   private   static  Connection dbConnect =  null ;
   private   static  Connection con =  null ;

   public  DB2Connector() {
    init();
  }
   private   static   void  init() {
    Properties props =  new  Properties();
     try  {
      FileInputStream in =  new  FileInputStream("database.properties");
      props.load(in);
      in.close();
    }
     catch  (Exception ex) {
      System.out.println("ERROR FROM DB2Connector. NE MOGU OTKRIT FILE database.properties");
    }
    drivers  = props.getProperty("jdbc.db2.drivers"); // driver path
    url      = props.getProperty("jdbc.db2.url"); // path to DB. URL adress
    user     = props.getProperty("jdbc.db2.username"); // UserID of DB
    password = props.getProperty("jdbc.db2.password"); //password of DB
  }

   public   static  Connection getConnect(){
    init();
     try  {
      System.out.print("        CONNECTING TO DB2...");
       Class .forName(drivers).newInstance();
      con = DriverManager.getConnection(url, user, password);
      System.out.println("                      [ OK ]");
    }
     catch  (Exception ex) {
      System.out.println("                  [ FAILED ]");
      System.out.println("        TYPE OF ERROR IS...  " + ex);
    }
     return  con;
  }
   public   static  String getDBFPath(){
     return  dbfPath;
  }
}

Я использую файл database.properties тогда твоя прога будет динамической, скопируй файл database.properties туда где твоя прога в exe или jar формате лежит. А вот и сам database.properties файл, что в нем лежит:

Код: plaintext
1.
2.
3.
4.
jdbc.db2.drivers=com.ibm.db2.jcc.DB2Driver
jdbc.db2.url=jdbc:db2://192.168.1.41:50001/
jdbc.db2.username=db2inst2
jdbc.db2.password= 123456 
Теперь когда надо в любой компьютер копируешь прогу с файлм database.properties и запускай, не надо всяких classpath
...
Рейтинг: 0 / 0
14.09.2005, 18:05
    #33269776
Не могу подсоединится с DB2
И все же поповоду изначального вопроса:
Выдается ошибка на этапе

Код: plaintext
 Class .forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();

В чем может быть проблема???
...
Рейтинг: 0 / 0
14.09.2005, 19:24
    #33269916
Не могу подсоединится с DB2
Все ребята решил вопрос. Лучше использовать db2jcc.jar вместо db2java.jar.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Не могу подсоединится с DB2 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]