powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat7 и Oracle10g
11 сообщений из 11, страница 1 из 1
Tomcat7 и Oracle10g
    #38530873
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Посоветуйте как исправить ошибку.
Обычное приложение Java соединяется с базой с такими же параметрами.
Проблемы возникают при запуске сервлета.
Код такой:
Код: 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.
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Query extends HttpServlet {
	
	Connection connection;
	
	public void init() throws ServletException {
		ServletConfig config = getServletConfig();
		String driverClassName = config.getInitParameter("driverClassName");
		String url = config.getInitParameter("url");
		String username = config.getInitParameter("username");
		String password = config.getInitParameter("password");
		try {
			Class.forName(driverClassName);
			connection = DriverManager.getConnection(url, username, password);
			
		} catch (Exception e) {
			log("Невозможно создать соединение с БД ", e);
			throw new ServletException("Запрос невозможно инициализировать " + 
					e.getMessage(), e);
		}
	}
	
	public void destroy() {
		try {
			connection.close();
		} catch (SQLException e) {}
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response) 
		throws IOException, ServletException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<head><title>DB Query</title></head>\n" +
				"<body bgcolor = white><h1>DB Query<h1>\n" +
				"<form><b>Query: </b><input name = 'g'>" +
				"input type = submit></form>");
		String query = request.getParameter("q");
		if (query != null) {
			out.println("<h1>" + query + "</h1>");
			Statement statement = null;
			try {
				statement = connection.createStatement();
				ResultSet results = statement.executeQuery(query);
				ResultSetMetaData metadata = results.getMetaData();
				int numcols = metadata.getColumnCount();
				out.println("<table border = 2><tr>");
				for(int i= 0; i < numcols; i++)
					out.print("<th>" + metadata.getColumnLabel(i + 1) + "</th>");
				out.println("</tr>");
				while(results.next()) {
					out.print("<tr>");
					for(int i = 0; i < numcols; i++)
						out.print("<td>" + results.getObject(i + 1) + "</td>");
					out.println("</tr>");
				}
				out.println("</table>");
			} catch (SQLException e) {
				out.println("Ошибка SQL: " + e.getMessage());
			} finally {
				try { statement.close(); }
				catch(Exception e) {}
			}
			
		}
		RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/counter");
		if (dispatcher != null) {
			out.println("<br> Количество посещений страницы: ");
			request.setAttribute(Counter.ATTRIBUTE_NAME, Query.class.getName());
			dispatcher.include(request, response);
		}
		out.println("</body>");
	}
}




Код: xml
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.
<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
              "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
  <web-app>
        <servlet>
             <servlet-name>Query</servlet-name>
             <servlet-class>Query</servlet-class>
	         <init-param>
	        	<param-name>countFile</param-name>
	        	<param-value>count.txt</param-value>
	        </init-param>    
	        <init-param>
	        	<param-name>saveInterval</param-name>
	        	<param-value>5000</param-value>
	        </init-param>         
	        <init-param>
	        	<param-name>driverClassName</param-name>
	        	<param-value>oracle.jdbc.driver.OracleDriver</param-value>
	        </init-param>  
	        <init-param>
	        	<param-name>url</param-name>
	        	<param-value>jdbc:oracle:thin:@my_pc:1521:LOC10"</param-value>
	        </init-param>  
	        <init-param>
	        	<param-name>username</param-name>
	        	<param-value>PAA</param-value>
	        </init-param>  
	        <init-param>
	        	<param-name>password</param-name>
	        	<param-value>P123</param-value>
	        </init-param>                  		     
        </servlet>
        <servlet-mapping>
             <servlet-name>Query</servlet-name>
             <url-pattern>/Query</url-pattern>
        </servlet-mapping>

  </web-app>



И выдается следующая ошибка:
javax.servlet.ServletException: Запрос невозможно инициализировать Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38530906
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapv
Код: xml
1.
2.
	        	<param-name>url</param-name>
	        	<param-value>jdbc:oracle:thin:@my_pc:1521:LOC10"</param-value>



И выдается следующая ошибка:
javax.servlet.ServletException: Запрос невозможно инициализировать Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

Явно ж написано: нет знает оракловая субд про базу LOC10.

Откуда коннект проходит? Если через клиента - то посмотрите tnsnames.ora - что там написано?
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38530995
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,

Oracle установлен у меня, на my_pc, соответственно запрос идет с сервера!?.

В tnsnames я все прописал:

# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

LOC10 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = my_pc)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = LOC10)
)
)
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531053
Adva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleapv,

SID через слеш задается:
jdbc:oracle:thin:@my_pc:1521/LOC10
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531059
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Adva, только что попробовал через слеш:
javax.servlet.ServletException: Запрос невозможно инициализировать Исключение ввода/вывода: The Network Adapter could not establish the connection
Query.init(Query.java:33)
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531070
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapv,

Попробуйте вместо my_pc поставить реальный IP-адрес (напр., jdbc:oracle:thin:@192.168.0.1:1521:LOC10 )
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531080
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Usman, попробовал
jdbc:oracle:thin:@192.168.1.3:1521:LOC10.
Подключилось.

Большое спасибо!
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531087
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapvВ tnsnames я все прописал:

Хотя проблема и решена, но...
Если в настройках драйвера стоит ":thin:", то TNSNAMES не используется, как и весь клиент с его 200+ мб мусора.
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531108
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,

Вопрос архитектуры пока что сложен.

Не понятно сколько будет пользователей.

Пока ставлю thin, так как других примеров не видел.

Буду рад если посоветуете что то почитать по архитектуре приложений:

БД + Java или БД + Java + WEB для разного числа пользователей.
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531132
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapvПока ставлю thin, так как других примеров не видел.

И не надо. Просто надо знать, что для java-приложения при такой настройке оракловый клиент не нужен.

aleapvБуду рад если посоветуете что то почитать по архитектуре приложений:
БД + Java или БД + Java + WEB для разного числа пользователей.

ConnectionPool - вроде как в томкате встроенный.
Создаётся 10-20 коннектов, которых хватает на 20-100 одновременно работающих потоков.
Причём открытия соединения (что должно) нет, но и ресурсы экономятся.
...
Рейтинг: 0 / 0
Tomcat7 и Oracle10g
    #38531134
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominСоздаётся 10-20 коннектов, которых хватает на 20-100 одновременно работающих потоков.
Причём открытия соединения (что должно долго ) нет, но и ресурсы экономятся.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat7 и Oracle10g
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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