Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Выполнение сервлета. Jserv+apache / 11 сообщений из 11, страница 1 из 1
21.04.2005, 11:16
    #33027107
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
Здравствуйте.
Ситуация:
есть сервлет - соединяется с БД выполняет запрос клиента. всё это дело работает с apache.

Вопрос: бывают ситации одноврменного доступа несколько пользователей заходят и выполняют запрос на поиск человека. Один нашёл, другоё нашёл а следующему возвращается результат не его запроса, а совсем другого (уже отбработанного). С чем это может быть связано. Где искать ?
...
Рейтинг: 0 / 0
21.04.2005, 11:26
    #33027135
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
Может синхронизировать метод, который осуществляет поиск, чтобы к нему имел доступ только один пользователь?
...
Рейтинг: 0 / 0
21.04.2005, 11:28
    #33027146
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
м.б., результат запроса кэшируется?
...
Рейтинг: 0 / 0
21.04.2005, 11:43
    #33027192
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
Если он кешируется - где это чудо убрать. Я так понимаю это в настройках apache.
...
Рейтинг: 0 / 0
21.04.2005, 11:44
    #33027195
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
fcsЕсли он кешируется - где это чудо убрать. Я так понимаю это в настройках apache.
Дело всего быстрее в твоем сервлете. Можешь его показать?
...
Рейтинг: 0 / 0
21.04.2005, 11:46
    #33027203
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
wessen fcsЕсли он кешируется - где это чудо убрать. Я так понимаю это в настройках apache.
Дело всего быстрее в твоем сервлете. Можешь его показать?
хитрый :)
...
Рейтинг: 0 / 0
21.04.2005, 12:14
    #33027345
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
Показать могу - не проблема:
с маленькими изменениями

Код: 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.
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.
 import  javax.servlet.*;
 import  javax.servlet.http.*;
 import  java.io.*;
 import  java.sql.*;
 import  java.lang.*;
 import  java.net.URL.*;
 import  java.util.*;

 public   class  ServletMy  extends  HttpServlet 
{
   public  Connection cn =  null ;
   public  ResultSet rs =  null ;
   public  PreparedStatement st =  null ;
  PrintWriter out;
   public   void  init(ServletConfig config)  throws  ServletException
  {
     super .init(config);
     try 
    {
       Class .forName("oracle.jdbc.driver.OracleDriver").newInstance();
    } catch (Exception ex)
    {
      out.println("<p>ОШИБКА ИНИЦИАЛИЗАЦИИ</p>");
    }
  }
  
   public   void  CreateConnection(String sUser, String sPass)
  {
     try 
    {
      cn = DriverManager.getConnection("jdbc:oracle:thin:@[тут у меня мой сервак с БД]",sUser, sPass);
    
    } catch (SQLException ex)
    {
      out.println("<p>ОШИБКА СОЕДИНЕНИЯ С БД. СООБЩЕНИЯ ОБ ОШИБКЕ:</p>");
      out.println(ex.getMessage());
    }
  }
  
   public   void  ShowResult(ResultSet rs)
  {
    /*Заполняем результат*/
     try  
    {
      ResultSetMetaData meta = rs.getMetaData();  
       int  columns = meta.getColumnCount();
       int  i, length;
      out.println("<table>");
      //Формируем шапку таблицы
      out.println("<tr>");
      out.println("<th> ЛЬГОТА</th>"); 
       for  (i= 0 ;i<columns;i++){  out.println("<th> "+meta.getColumnLabel(i+ 1 )+"</th>");  }
      out.println("<th> ЛЬГОТА</th>");
      out.println("</tr>");
      out.println("<tr><pre></pre><tr><pre></pre></tr>");
       while  (rs.next())
      {         
          out.println("<tr>");
          
	   for  (i= 0 ;i<columns;i++){
		 if (rs.getString(i+ 1 )=="null"){
			out.println("<td> </td>");
		} else {out.println("<td> "+rs.getString(i+ 1 )+"</td>");}
	  }
	
	  out.println("</tr>");
       }
      out.println("</table>");
      st.close();
      cn.close();      
    } catch (SQLException ex)
    {
      
    }
    
  }

   public   void  doGet(HttpServletRequest request, HttpServletResponse response)  throws  ServletException, IOException
  {
    response.setContentType("text/html;charset=Windows-1251");
    out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Результат поиска</title><link rel=stylesheet type=\"text/css\");
    out.println("<META content=\"text/html; charset=windows-1251\" http-equiv=\"Content-Type\"></head>");
    out.println("<body>");
    
    String requestEnc = "ISO-8859-1";
    // Кодировка, установленная в броузере
    String clientEnc = request.getParameter("charset");
     if ( clientEnc== null  ) clientEnc="Cp1251";
    
    String sFamily="";  String sName=""; String sFather=""; String sDR="";  
    String Family = ""; String Name = ""; String Father = "";
    String birthdate = "";
    /*Получаем параметры*/
     try 
    {
      Family = request.getParameter("Family");
      Name = request.getParameter("Name");
      Father = request.getParameter("Father");
      birthdate = request.getParameter("Birthdate");
    }
     catch (Exception e)
    {
      e.printStackTrace();
    }
    
     if (Family!= null ) {      Family =  new  String(Family.getBytes(requestEnc),clientEnc); sFamily = "upper(family) like upper(?)";     }
     if (Name!= null )   {      Name =  new  String(Name.getBytes(requestEnc),clientEnc);  sName = " and upper(name) like upper(?)";       }  
     if (Father!= null ) {      Father =  new  String(Father.getBytes(requestEnc),clientEnc); sFather = " and upper(father) like upper(?)";}
     if (birthdate.length()!= 0 ) {      sDR = "and d_rogd=(?)"; }

     try 
    {
       if ((sFather.length()== 0 ) && (sName.length()== 0 ) && (sFamily.length()== 0 ) && (sDR.length()== 0 )){
        out.println("<font color=\'red\'><p>Вы не ввели ни одного критерия для поиска</p></font>");
      }
       else   if (sFamily.length()> 0 )
      {
	 if (sDR.length()> 0 )
	{
	  CreateConnection("[тут user]","[тут pass]");
	  st = cn.prepareStatement("SELECT * FROM v_son WHERE "+sFamily+sName+sFather+sDR);
          st.setString( 1 ,Family+'%');
          st.setString( 2 ,Name+'%');
          st.setString( 3 ,Father+'%');
	  st.setString( 4 ,birthdate);
          rs = st.executeQuery();
          ShowResult(rs);		
	} else   if (sDR.length()== 0 )
	{
	  CreateConnection("[тут user]","[тут pass]");
	  st = cn.prepareStatement("SELECT * FROM v_son WHERE "+sFamily+sName+sFather);
          st.setString( 1 ,Family+'%');
          st.setString( 2 ,Name+'%');
          st.setString( 3 ,Father+'%');
          rs = st.executeQuery();
          ShowResult(rs);			
	}
      }

                    
    } catch (SQLException ex)
    {
      out.println("<p><ОШИБКА В ПРОЦЕССЕ ВЫПОЛНЕНИЯ ЗАПРОСА./p>");  
    }
    
    
    out.println("</pre>");
    out.println("<hr>");
    
    out.println("</body></html>");
    out.close();
  }

   public   void  doPost(HttpServletRequest request, HttpServletResponse response)  throws  ServletException, IOException
  {
    doGet(request,response);
  }
}
...
Рейтинг: 0 / 0
21.04.2005, 12:17
    #33027352
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
мамочки...
...
Рейтинг: 0 / 0
21.04.2005, 12:27
    #33027380
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
У тебя все переменные глобальные и не один метод не синхронизирован, а это очень плохо! При большой нагрузке, кирдык твоему сервлету настанет. И даже переменная out у тебя глобальноя, это не куда не годится.
...
Рейтинг: 0 / 0
21.04.2005, 12:33
    #33027401
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
wessenУ тебя все переменные глобальные и не один метод не синхронизирован, а это очень плохо! При большой нагрузке, кирдык твоему сервлету настанет. И даже переменная out у тебя глобальноя, это не куда не годится.осталось добавить: мы все умрём :)
...
Рейтинг: 0 / 0
21.04.2005, 12:37
    #33027420
fcs
fcs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение сервлета. Jserv+apache
wessenУ тебя все переменные глобальные и не один метод не синхронизирован, а это очень плохо! При большой нагрузке, кирдык твоему сервлету настанет. И даже переменная out у тебя глобальноя, это не куда не годится.

Спасибо за подсказку. Буду капать. Если не разберусь - спрошу ещё.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Выполнение сервлета. Jserv+apache / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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