Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > скрипт на java


Автор: fish9370 1.9.2010, 13:10
Здравствуйте уважаемые любители java

мне нужен скрипт выполняемый сторонней программой (radius), куда будет переданно несколько параметров. Скрипт должен быть написан на java - он должен выполнить запрос к СУБД (sybase), выводить на стандартное устройство вывода строку разделенную запятыми (атрибуты)


я не знаком с java

на php я бы поступил примерно так:

Код

<?php 

  include($_root_dir . 'db/mysql.php'); //описание класса для работы с СУБД

  $db = new sql_db($GLOBALS['_host'], $GLOBALS['_user'], $GLOBALS['_pass'], $GLOBALS['_dbname'], false);

  $sql = "select * from log_all"; 
  $result = $db->sql_query($sql);
                   
  while ( $row = $db->sql_fetchrow($result) )  {
      print($row['src']);
   }

?>


выполнил бы я этот код так:

Код

>php ./test.php 


но проблема в том, что у меня нет коннектора для SyBase
в тоже время у меня есть ряд скриптов на jsp где я мог бы обратиться к базе, но что-то мне подсказывает, что в джаве в этом случае все можно сделать красивее..

подскажите как выполнить скрипт на jsp из терминала, и как написать этот код красиво?

Автор: LSD 1.9.2010, 14:35
JSP - это не скрипт. А вообще неплохо бы поподробнее объяснить что надо. Что за сторонняя программа и какие таки скрипты она умеет выполнять?

Автор: fish9370 1.9.2010, 14:49
Цитата(LSD @ 1.9.2010,  14:35)
JSP - это не скрипт. А вообще неплохо бы поподробнее объяснить что надо. Что за сторонняя программа и какие таки скрипты она умеет выполнять?

я извиняюсь если плохо объяснил, судя по количеству откликов, видимо не очень.. попробую еще раз..

сторонняя программа - freeRadius - позволяет при передаче определенных атрибутов от NAS выполнить некоторый скрипт.. скрипт может быть написан на любом языке.. я бы предпочел его написать на PHP.. но у меня связаны руки..

в то же время, уже реализован WEB-интерфейс на jsp в котором есть нужный коннектор.. дынные из базы выгребаются и обрабатываются..

на ум приходит написать что-то вроде:

Код

<%@ include file=".in/dbc.inc" %>

<%
    ResultSet rs = stmt.executeQuery("select * from log_all");
    rs.getString("src");
    rs.close();
%>


но как это выполнить из шела?

Автор: Kircul 1.9.2010, 15:00
Цитата(fish9370 @  1.9.2010,  13:49 Найти цитируемый пост)
в то же время, уже реализован WEB-интерфейс на jsp в котором есть нужный коннектор.. дынные из базы выгребаются и обрабатываются.

Цитата(fish9370 @  1.9.2010,  13:49 Найти цитируемый пост)
но как это выполнить из шела?

Ну самый простой вариант, который приходит на ум это использовать утилиту http://ru.wikipedia.org/wiki/Curl и sh-скрипт, который сформирует url со всеми аттрибутами.
Однако:
Цитата(fish9370 @  1.9.2010,  13:49 Найти цитируемый пост)
при передаче определенных атрибутов от NAS

Не совсем понятно куда эти аттрибуты передаются. Нельзя ли их сразу редиректнуть на Веб интерфейс (методом GET, например)? Минуя shell.

Автор: powerOn 1.9.2010, 15:03
Я вообще ничего не понял. Причем тут JSP?

Слово "скрипт" имеет общее значение, как набор команд реализованный с помощью какого-либо языка. Если в php и распространнено выражение "php скрипт", то это не означает, что скрипт написаный на Java должен иметь технические паралели с php, т.е. быть jsp страницей.


Автор: fish9370 1.9.2010, 15:11
http://ru.wikipedia.org/wiki/RADIUS - это стандартный протокол для взаимодействия с различными устройствами, поддерживается множеством производителей и устройств..

нет, я конечно мог бы обратиться непосредственно к странице, через http, но:
1 это велосипед
2 это мало производительно
и куча других минусов..

хочу заметить, не суть важно какая программа будет запускать программу (скрипт) из шела, мне важно чтобы эта програма могла обращаться к базе, и возвращать результат на стандартное устройство вывода..

база крутится на SyBase.. 

я подумал, что сложного написать такой скрипт, если есть коннектор, подобно тому коду, что я привел на PHP..

Добавлено через 3 минуты и 1 секунду
Цитата(powerOn @ 1.9.2010,  15:03)
Я вообще ничего не понял. Причем тут JSP?

Слово "скрипт" имеет общее значение, как набор команд реализованный с помощью какого-либо языка. Если в php и распространнено выражение "php скрипт", то это не означает, что скрипт написаный на Java должен иметь технические паралели с php, т.е. быть jsp страницей.

он тут непричем.. я не разбираюсь в джаве.. скажите как правильно..

Автор: LSD 1.9.2010, 16:57
Я так понимаю что все что может этот freeRadius это выполнить некую консольную программу и передать ей некоторые параметры, так?

JSP нельзя "выполнить" вне сервера приложений. Я вижу 2 варианта:
1. обратится по некому URL к некой JSP и передать ей нужные параметры
2. написать консольное Java приложение которое будет соединятся с базой и выполнять нужный SQL

P.S. Посмотри http://www.java-course.ru/ Часть 3 - База данных там есть пример как соединиться с базой данных и выполнить SQL.

Автор: ivanovpv 2.9.2010, 07:33
Цитата(fish9370 @  1.9.2010,  14:10 Найти цитируемый пост)
мне нужен скрипт выполняемый сторонней программой (radius), куда будет переданно несколько параметров. Скрипт должен быть написан на java - он должен выполнить запрос к СУБД (sybase), выводить на стандартное устройство вывода строку разделенную запятыми (атрибуты)


JSP невозможно выполнить вне сервака. Попытка вызова JSP скрипта вне сервера это примерно то же самое что и выполнить сишные исходники не имея компилятора и сборщика. JSP компилируется на лету специальным компилятором сервера. Теоретически конечно можно в рамках шелла подсунуть под JSP скрипт компилятор и проч. дела - но боюсь это всего лишь фантазии.

Автор: fish9370 2.9.2010, 09:41
Цитата(LSD @  1.9.2010,  16:57 Найти цитируемый пост)
написать консольное Java приложение которое будет соединятся с базой и выполнять нужный SQL


- вот именно это мне и надо.. 
про jsp я подумал, потому-что в PHP нет различия под что пишешь под консоль или под веб-страницу..

что нужно? как собрать? как исполнить? - в общих чертах..

Добавлено через 1 минуту и 20 секунд
Цитата(ivanovpv @  2.9.2010,  07:33 Найти цитируемый пост)
SP невозможно выполнить вне сервака. Попытка вызова JSP скрипта вне сервера это примерно то же самое что и выполнить сишные исходники не имея компилятора и сборщика. JSP компилируется на лету специальным компилятором сервера


спасибо.. - не знал что в джаве так..

Автор: kkorsakoff 3.9.2010, 10:36
Как вариант можете использовать groovy. Во-первых это скриптовый язык, во-вторых можно установить на линукс сервер пакет groovy и оформить все как обычный шелл-скрит, в-третьих можно использовать любые java-библиотеки.

http://www.ibm.com/developerworks/java/library/j-pg01115.html

Вот пример sql-запроса

Код

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(String[] args) {
    def sql = Sql.newInstance("jdbc:mysql://localhost:3306/words", "words",
           "words", "com.mysql.jdbc.Driver")
    sql.eachRow("select * from word"){ row ->
       println row.word_id + " " + row.spelling + " " + row.part_of_speech
    }
  }
}


Автор: fish9370 6.9.2010, 09:43
Цитата(kkorsakoff @  3.9.2010,  10:36 Найти цитируемый пост)
Как вариант можете использовать groovy


kkorsakoff большое спасибо..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)