powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите найти ошибку
7 сообщений из 7, страница 1 из 1
Помогите найти ошибку
    #39542979
718
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
718
Гость
Код: java
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.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleDriver;
import oracle.jdbc.pool.OracleConnectionCacheManager;
import oracle.jdbc.pool.OracleDataSource;



public final class ODS
{
  private static final String CACHE_NAME = "ODS@" + Project.rootPath;
  
  private static final String FILE_NAME = "WEB-INF/Connection.properties";
  private static final long SYS_LOGIN_ID = -1;
  private static OracleDataSource ods = null;
  private static OracleConnectionCacheManager occm = null;
  
  private static Properties prop;
  
  public static final CoreException authException = new CoreException("Сеанс не авторизован", true);
  
  static
  {
    try {
      DriverManager.registerDriver(new OracleDriver());
    }
    catch (SQLException e) {
      e.printStackTrace(System.err);
    }
  }
  
  public ODS() {}
  
  public static synchronized void init() throws Exception { if (ods == null) {
      prop = loadParams();
      
      ods = new OracleDataSource();
      ods.setDriverType("thin");
      setProperties(prop);
      
      ods.setConnectionCachingEnabled(true);
      ods.setConnectionCacheName(CACHE_NAME);
      
      occm = OracleConnectionCacheManager.getConnectionCacheManagerInstance();
      if (occm.existsCache(CACHE_NAME))
        occm.removeCache(CACHE_NAME, 0);
      occm.createCache(CACHE_NAME, ods, prop);
    }
  }
  
  public static synchronized void done() throws Exception
  {
    if (ods != null) {
      ods.close();
      ods = null;
    }
  }
  
  public static void reinit(Properties prop) throws Exception
  {
    done();
    init();
  }
  
  public static void clearSessions() throws Exception
  {
    OracleConnection conn = getConnection();
    


    conn.close();
  }
  
  private static void setProperties(Properties prop)
    throws Exception
  {
    ods.setServerName(prop.getProperty("HostName"));
    ods.setPortNumber(Integer.parseInt(prop.getProperty("Port")));
    ods.setDatabaseName(prop.getProperty("SID"));
    ods.setUser(prop.getProperty("UserName"));
    ods.setPassword(prop.getProperty("Password"));
  }
  
  private static void initConnection(OracleConnection conn, long loginId) throws Exception
  {
    try (OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall("Begin Core_Global.Init_Connection(?); End;")) {
      cs.setLong(1, loginId);
      cs.execute();
    }
  }
  



  public static OracleConnection getConnection(long loginId)
    throws Exception
  {
    OracleConnection conn = null;
    
    if (loginId == 0) {
      throw authException;
    }
    
    for (int try_count = 0; try_count < 3; try_count++) {
      conn = (OracleConnection) ods.getConnection();
      if (conn != null) break;
      Thread.sleep(300);
    }
    if (conn == null) {
      if (occm.getNumberOfAvailableConnections(CACHE_NAME) == 0) {
        throw new Exception("Количество связей с БД превысило максимум");
      }
      reinit(prop);
      
      for (int try_count = 0; try_count < 3; try_count++) {
        conn = (OracleConnection)ods.getConnection();
        if (conn != null) break;
        Thread.sleep(300);
      }
      if (conn == null) {
        throw new Exception("Соединение с БД потеряно");
      }
    }
    conn.setAutoCommit(false);
    initConnection(conn, loginId);
    return conn;
  }
  



  public static OracleConnection getConnection()
    throws Exception
  {
    return getConnection(-1);
  }
  

  public static OracleConnection createConnection()
    throws Exception
  {
    Properties prop1 = loadParams();
    OracleConnection conn = (OracleConnection)DriverManager.getConnection(
      "jdbc:oracle:thin:@" + prop1.getProperty("HostName") + ":" + 
      prop1.getProperty("Port") + ":" + prop1.getProperty("SID"), 
      prop1.getProperty("UserName"), prop1.getProperty("Password"));
    
    conn.setAutoCommit(false);
    initConnection(conn, -1);
    return conn;
  }
  




  public static void putConnection(OracleConnection conn)
  {
    if (conn != null) {
      try {
        conn.rollback();
      } catch (SQLException localException) {}
      try {
        conn.close();
      }
      catch (SQLException localException1) {}
    }
  }
  


  public static Properties loadParams()
    throws Exception
  {
    Properties prop2 = new Properties();
    try (FileInputStream f = new FileInputStream(Project.rootPath + "WEB-INF/Connection.properties")) {
      prop2.load(f);
    }
    return prop2;
  }
  



  public static void storeParams(Properties prop)
    throws Exception
  {
    try (FileOutputStream f = new FileOutputStream(Project.rootPath + "WEB-INF/Connection.properties")) {
      prop.store(f, null);
    }
  }
}



При отладке получаю ошибку
ODS.getConnection(ODS.java:113)
ODS.getConnection(ODS.java:143)

в чем может быть причина
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543144
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
718При отладке получаю ошибку
ODS.getConnection(ODS.java:113)
ODS.getConnection(ODS.java:143)

в чем может быть причина

Включаю экстрасенсорные возможности - ошибки в 113 и 143 строках в файле ODS.
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543148
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот это что?

Код: java
1.
2.
3.
4.
5.
  public static OracleConnection getConnection()
    throws Exception
  {
    return getConnection(-1);
  }
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543151
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
  private static void initConnection(OracleConnection conn, long loginId) throws Exception
  {
    try (OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall("Begin Core_Global.Init_Connection(?); End;")) {
      cs.setLong(1, loginId);
      cs.execute();
    }
  }


Try без catch... далее смотреть неинтересно.
Извините.
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543541
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Код: java
1.
2.
3.
4.
5.
6.
7.
  private static void initConnection(OracleConnection conn, long loginId) throws Exception
  {
    try (OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall("Begin Core_Global.Init_Connection(?); End;")) {
      cs.setLong(1, loginId);
      cs.execute();
    }
  }


Try без catch... далее смотреть неинтересно.
Извините.
"Новый" синтаксис для освобождения ресурсов.
При чем тут catch ?
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543635
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весь стектрейс смотреть не пробовал?
...
Рейтинг: 0 / 0
Помогите найти ошибку
    #39543685
Igor4IV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQLException - if a database access error occurs
Ошибка доступа к БД

Варианты:
1. Логин/пароль не подходят
2. По указанному адресу нет БД
3. Указанный адрес не доступен
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите найти ошибку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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