Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat7 и Oracle10g / 11 сообщений из 11, страница 1 из 1
19.01.2014, 09:42
    #38530873
aleapv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat7 и Oracle10g
Добрый день!
Посоветуйте как исправить ошибку.
Обычное приложение 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
19.01.2014, 11:34
    #38530906
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat7 и Oracle10g
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
19.01.2014, 14:31
    #38530995
aleapv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat7 и Oracle10g
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
19.01.2014, 16:00
    #38531053
Adva
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat7 и Oracle10g
aleapv,

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

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

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

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

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

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

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

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

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

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

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

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


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