Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tomcat, Struts, MySQL, Servlet action is currently unavailable 
V
    Опции темы
Kraska
Дата 29.4.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Servlet action is currently unavailable
Вот такая ерунда после сабмита.......

struts-config.xml имеет вид.....
Код

<struts-config>
 
<data-sources>

<data-source type="org.apache.commons.dbcp.BasicDataSource" key="userDB">
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://localhost/Test" />
<set-property property="username" value="abc"/>
<set-property property="password" value="123" />

</data-source>
</data-sources>

<!-- ========== Form Bean Definitions ================= -->
  <form-beans>

    <form-bean name="lookupForm" type="pack.LookupForm"/>

  </form-beans>

  <!-- ========== Action Mapping Definitions ============ -->
  <action-mappings>

    <action path="/index"
    type="pack.LookupAction"
    name="lookupForm" 

    input="/index.jsp">
    <forward name="success" path="/next.jsp"/>
      <forward name="failure" path="/index.jsp"/>

    
    </action>


  </action-mappings>

</struts-config>


Возможно, не хватает jar-ов.... у меня в lib находятся такие:
Код

 antlr.jar
 commons-beanutils.jar
 commons-digester.jar
 commons-fileupload.jar
 commons-logging.jar
 commons-validator.jar
 jakarta-oro.jar
 mm.mysql-2.0.14-you-must-unjar-me.jar
 mysql-connector-java-3.1.7-bin.jar
 servlet.jar
 struts.jar


И в классе, в методе execute() такой кусок кода
Код

try{
    DataSource ds = getDataSource(request, "userDB");
    Connection conn = ds.getConnection();

    
    PreparedStatement statement = conn.prepareStatement("INSERT INTO Table1  (Name, Age) values (?,?)");
    statement.setString(1,lookupForm.getN());
    statement.setString(2,lookupForm.getA());
    
    statement.executeUpdate();
    }catch(SQLException e)
      {
        e.printStackTrace();
      }
}
return (mapping.findForward(target));


Подскажите, пожалуйста, в чем ошибка? Заранее спасибо! smile  

Это сообщение отредактировал(а) tux - 30.4.2006, 05:29
PM MAIL   Вверх
tux
Дата 30.4.2006, 05:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Приведи еще содержимое web.xml.  

Это сообщение отредактировал(а) tux - 30.4.2006, 05:31
PM MAIL Skype GTalk Jabber YIM   Вверх
Kraska
Дата 30.4.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Цитата

Приведи еще содержимое web.xml.  



Код

<?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>

  <!-- Standard Action Servlet Configuration (with debugging) -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
      org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
      <param-name>application</param-name>
      <param-value>ApplicationResources</param-value>
    </init-param>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>validate</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

 
  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

 
  <!-- Struts Tag Library Descriptors -->
  <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>

  <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>

</web-app>

До добавления подключения к БД, этот пример работал нормально, при сабмите все, введенное в форму, нормально отображалось на следующей страничке..... Это я к тому, что с маппингом вроде проблем быть не должно..... 
Еще меня, чисто интуитивно, смущает строка 
<set-property property="url" value="jdbc:mysql://localhost/Test" />
Это я так обращаюсь к базе Test, размещенной в папке, в которую по умолчанию загоняются MySQL-вские базы (базу делала с помощью PHPMyAdmin)

Спасибо за ответы smile  

Это сообщение отредактировал(а) Kraska - 30.4.2006, 12:46
PM MAIL   Вверх
tux
Дата 30.4.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



С базой все нормально, до нее дело и не доходит. Проверь соответствие имени твоего класса pack.LookupAction, описанного в struts-config.xml и реального. В общем проблема скорее всего в том, что Struts не может найти класс для выполнения по сабмиту. Возможно еще ссылка в форме в JSP указана неверно. Если не поможет, запрости все остатки - JSP и StackTrace из лога если он там есть. 
PM MAIL Skype GTalk Jabber YIM   Вверх
Kraska
Дата 30.4.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Цитата

С базой все нормально, до нее дело и не доходит. Проверь соответствие имени твоего класса pack.LookupAction, описанного в struts-config.xml и реального. В общем проблема скорее всего в том, что Struts не может найти класс для выполнения по сабмиту. 


В том-то и дело, что до добавления обращения к базе в этом примере, сабмит замечательно работал, т.е. next.jsp успешно отображала введенные в форму значения.....

index.jsp имеет вид

Код

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<body>
<html:form action="index"  > 
<table width="45%" border="0">
<tr>
    <td width="39%">Name:</td>

    <td width="61%">
     
      <html:text property="name" /></td>
</tr>

    <td width="39%">Age:</td>

    <td width="61%">
      
 <html:text property="age" />   
</tr>


<tr>
    <td colspan="2" align="center" height="22"> <html:submit /> </td>
</tr>
</table>
</html:form>

</body>
</html> 
 
PM MAIL   Вверх
katala
Дата 30.4.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



напиши подробнее какая выскакивает ошибка 
PM MAIL   Вверх
Kraska
Дата 30.4.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Цитата

напиши подробнее какая выскакивает ошибка  


HTTP Status 503 - Servlet action is currently unavailable
--------------------------------------------------------------------------------
type Status report

message Servlet action is currently unavailable

description The requested service (Servlet action is currently unavailable) is not currently available.

Это полный текст сообщения об ошибке  

Это сообщение отредактировал(а) Kraska - 30.4.2006, 14:10
PM MAIL   Вверх
katala
Дата 30.4.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



Цитата

try{    
    DataSource ds = getDataSource(request, "userDB");    
    Connection conn = ds.getConnection();    
     
    PreparedStatement statement = conn.prepareStatement("INSERT INTO Table1  (Name, Age) values (?,?)");    
    statement.setString(1,lookupForm.getN());    
    statement.setString(2,lookupForm.getA());    
     
    statement.executeUpdate();    
    }catch(SQLException e)    
      {    
        e.printStackTrace();    
      }    
}

так вот еще маленький вопросик 
по моему нет метода executeUpdate() а есть метод executeUpdate(String sql);

Добавлено @ 14:50 
вот тебе пример рабочей схемы для соединения  с базой Mysql
 создаешь класс   ConnectionPool

package vDataBase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class ConnectionPool {

    private List connections;
    private static ConnectionPool object;
    
    /**
     * @param connections
     */
    private ConnectionPool() {
        try {
            Class.forName ("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        connections = new ArrayList();
        for (int i = 0; i < 10; i++) {
            Connection con = null;
            try {
                con = DriverManager.getConnection ("jdbc:postgresql://localhost:5432/Test", "abc", "123");
                connections.add(con);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    
    public Connection getConnection() {
        return (Connection) connections.remove(0);
    }
    
    public void putConnection(Connection con) {
        connections.add(con);
    }
    
    public static ConnectionPool getConnectionPool() {
        if (object == null) 
            object = new ConnectionPool();
        return object;
    }
}
 потом соддаеш класс  пример DAO  где описаваеш все методы обработки инфы
public class DAO {
    
    public void deletTabl(){
        Connection connection = ConnectionPool.getConnectionPool().getConnection();
        try {
            Statement statement = connection.createStatement();
            statement.executeUpdate("delete from table_name");
        } catch (SQLException e4) {
            // TODO Auto-generated catch block
            e4.printStackTrace();
        } 
        
        ConnectionPool.getConnectionPool().putConnection(connection);
    }
} тут для примеря только функция удаления все инфы из таблицы
потом в своем классе 
pack.LookupAction(так по моему он называется) добавшляешь такой кусок
 DAO dm = new DAO();
 dm.deletTabl();
и все!!!! все прекрасно работает(проверено на личном опыте). попробудй так и сообщи если появяться какие ошибки 
PM MAIL   Вверх
ALKS
Дата 30.4.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 6
Всего: 11



1. метод executeUpdate() без параметров разумеется есть. так же как и просто execute(). и более того между ними есть тонкая разница, различаемая не всеми JDBC драйверами...

2. создавать собственный конекшн пулл, запускаясь под AppServer-ом, практика порочная. и никто меня не переубедитв этом. smile 
PM   Вверх
tux
Дата 30.4.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Kraska @  30.4.2006,  03:45 Найти цитируемый пост)
Возможно, не хватает jar-ов.... 

Действительно, возможно... Не обратил вниамания... Добавь такие: commons-pool.jar и commons-dbcp.jar. И хорошо бы все-таки видеть твой лог сервера, а не те сообщения, которые выдаются в браузере, они-то как раз совершенно бесполезны. Без этого невозможно понять что произошло.

Добавлено @ 15:20 
Цитата(ALKS @  30.4.2006,  20:07 Найти цитируемый пост)
2. создавать собственный конекшн пулл, запускаясь под AppServer-ом, практика порочная. и никто меня не переубедитв этом. smile  

Да-да, я уже пытался smile 
PM MAIL Skype GTalk Jabber YIM   Вверх
Kraska
Дата 30.4.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Народ, дело действительно было в нехватке commons-pool.jar и commons-dbcp.jar  smile 
Огромное всем спасибо за ответы! smile 
PM MAIL   Вверх
Kraska
Дата 1.5.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Прошу пардону, но это снова я......  smile 
Теперь пытаюсь вывести данные из этой самой базы.....

есть такой код:
Код

try{
        DataSource ds = getDataSource(request, "userDB");
        Connection conn = ds.getConnection();

        
        Statement statement = conn.createStatement();
        ResultSet rs = statement.executeQuery("select * from table1");
        
        ArrayList list =  new ArrayList();
        while (rs.next()){

        list.add(new User(rs.getString(1), rs.getString(2)));    
        }

             request.setAttribute("users", list);
           

        }catch(SQLException e)
          {
            e.printStackTrace();
          }



Код

public class User  {
    private String name;
    private String city;
    
    public User(String name, String city) {
        this.name = name;
        this.city = city;
    }

    
    public String getname() {
    return name;
    }

    public void setname(String name) {
    this.name = name;
    }

    public String getcity() {
        return city;
        }

   public void setcity(String city) {
        this.city = city;
        }


и jsp- страничка, на которой должна выводиться таблица с даными...
Код

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="html" %>

<html>
<body>

<logic:present name="users">

<table border="1">
  <tr> 
    <th> name: </th>
    <th> city: </th>
  </tr>
  <logic:iterate id="user" name="users"> 
  <tr> 
    <td> <bean: write name="user" property="name"/> </td>
    <td> <bean: write name="user" property="city"/> </td>
  </tr>
  </logic:iterate> 
</table>

</logic:present>

</body>
</html></html>


Но на страничке отображается только пустая таблица, точнее только заголовки столбцов..... 
Как с этим бороться? спасибо! smile 
PM MAIL   Вверх
tux
Дата 2.5.2006, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Удивляюсь, что вообще что-то выводится. В декларации таглибов должно быть так:
Код

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
 
PM MAIL Skype GTalk Jabber YIM   Вверх
Kraska
Дата 2.5.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Цитата(tux @ 2.5.2006,  01:36)
Удивляюсь, что вообще что-то выводится. В декларации таглибов должно быть так:
Код

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

Да, тут я конечно протупила ужасно  smile  smile 

Спасибо за ответы, всех с заканчивающимися праздниками!  smile  
PM MAIL   Вверх
Kraska
Дата 4.5.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2006

Репутация: нет
Всего: нет



Вопрос снимается, ошибка нашлась smile 

Это сообщение отредактировал(а) Kraska - 4.5.2006, 21:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.