Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Скрипты
#1
Я переделываю сервак Rb под Gracia 2 и под pSQL. уже много сделал. много чёго написано и переписано, очень много полезного. мне нужны все скрипти под Ребу ССР Дрим, тоисть квесты, евенты и так далее на яве конечно. ну что б не сомневались на те мой Гео сервер.
настройки сервера:
-- log.ini
лучше туда не лезьть там настройки на отдельный лог сервак но я его не выложыл.
-- telnet.ini
О. телнет для гео но с минимальным функционалом только
---- restart
---- shutdown
--log_console.ini
лучше туда не лезьть
--server.ini
там настройки на хост порт и + автоматический рестарт(О.о.)
http://rapidshare.com/files/191094808/geo.rar.html

Можите скрипты в етой теме без хайда. Когдато я выложу сервак.(Когда доделаю)
Ответ
#2
Вот непойму, почему все гонятся за обновлениями то?!
По теме, пСКЛ это замечательно, но МС былоб лучше Smile
А в чём проблема со скриптами?На просторах всё есть и без хайда Wink
Ну если что, пиши в аську ( есть в профиле ) помогу чем смогу Smile
Ответ
#3
VISTALL Написал:Я переделываю сервак Rb под Gracia 2 и под pSQL. уже много сделал. много чёго написано и переписано, очень много полезного. мне нужны все скрипти под Ребу ССР Дрим, тоисть квесты, евенты и так далее на яве конечно. ну что б не сомневались на те мой Гео сервер.
настройки сервера:
-- log.ini
лучше туда не лезьть там настройки на отдельный лог сервак но я его не выложыл.
-- telnet.ini
О. телнет для гео но с минимальным функционалом только
---- restart
---- shutdown
--log_console.ini
лучше туда не лезьть
--server.ini
там настройки на хост порт и + автоматический рестарт(О.о.)
http://rapidshare.com/files/191094808/geo.rar.html

Можите скрипты в етой теме без хайда. Когдато я выложу сервак.(Когда доделаю)
лучшеб интегрировал какойто фреймворк для работы с СУБД:

ORM/DAO слой с помощью фреймворков Hibernate + Spring (на jfree loginserver, но немного надо подкорректировать) Однако эту систему критикуют
либо собственный генератор запросов СУБД в зависимости от текущего драйвера СУБД (наброски этой системы были в l2j но в дальнейшем убрали - смотри L2DatabaseFactory, но можно и собственную разработку). http://superquail.sourceforge.net/index.html
Немного приходится парится с кодом, но затем можно использовать любую СУБД изменив пару строк
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#4
интересноSmile Согласен. ну то что поднапрячся с кодом. Мне не страшно я уже поигрался с переходом на постгрес. ThreadConnection и L2DatabaseFactory у ребы другие... Хоча можно перейди с c3p0 библиотекы конекта и так далее . Вопрос стоит ли?

Добавлено через 5 минут
ребелионовська L2DatabaseConnection
Код:
package l2r.database;

import java.sql.SQLException;
import java.util.Hashtable;
import java.util.logging.Level;
import java.util.logging.Logger;

import l2r.Config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;

/**
* <p>При работе с пулами коннектов иногда возникает ситуация - когда выбираешь весь пул до предела и
* при этом коннекты не закрываются а требуется получить еще один коннект. В этом случае программа
* зависает. Так бывает если в процессе выполнения одного запроса при переборке результатов вызывается
* другая функция, которая также берет коннект из базы данных. Таких вложений может быть много. И коннекты
* не отпускаются, пока не выполнятся самые глубокие запросы. DBCP и C3P0 висли при этом - опробовано на
* практике.
* </p>
* <p>Для того чтобы избежать этой коллизии пишется оболочка для коннекта, которой коннект
* делегирует все свои методы. Эта оболочка хранится в локальном пуле коннектов и если коннект запрашивается
* в потоке - для которого был уже открыт коннект и еще не закрыт, то возвращаем его.
* </p>
* Эту возможность можно отключить выставив в настройках сервера UseDatabaseLayer = false;
*/
public class L2DatabaseFactory
{
    private static L2DatabaseFactory _instance;
    private ComboPooledDataSource _source;

    //список используемых на данный момент коннектов
    private final Hashtable<String, ThreadConnection> Connections = new Hashtable<String, ThreadConnection>();

    static Logger _log = Logger.getLogger(L2DatabaseFactory.class.getName());

    public L2DatabaseFactory() throws SQLException
    {
        _instance = this;
        try
        {
            if(Config.DATABASE_MAX_CONNECTIONS < 2)
            {
                Config.DATABASE_MAX_CONNECTIONS = 2;
                _log.warning("at least " + Config.DATABASE_MAX_CONNECTIONS + " db connections are required.");
            }

            Class.forName(Config.DATABASE_DRIVER).newInstance();

            if(Config.DEBUG)
                _log.fine("Database Connection Working");

            _source = new ComboPooledDataSource();
            _source.setDriverClass(Config.DATABASE_DRIVER); //loads the jdbc driver
            _source.setJdbcUrl(Config.DATABASE_URL);
            _source.setUser(Config.DATABASE_LOGIN);
            _source.setPassword(Config.DATABASE_PASSWORD); // the settings below are optional -- c3p0 can work with defaults
            _source.setAutoCommitOnClose(true);
            _source.setInitialPoolSize(1);
            _source.setMinPoolSize(1);
            _source.setMaxPoolSize(Config.DATABASE_MAX_CONNECTIONS);
            _source.setAcquireRetryAttempts(0);// try to obtain Connections indefinitely (0 = never quit)
            _source.setAcquireRetryDelay(100);// 500 miliseconds wait before try to acquire connection again
            _source.setCheckoutTimeout(0); // 0 = wait indefinitely for new connection
            _source.setAcquireIncrement(5); // if pool is exhausted, get 5 more Connections at a time
            _source.setMaxStatements(100);
            _source.setIdleConnectionTestPeriod(60); // test idle connection every 1 minute
            _source.setMaxIdleTime(600); // remove unused connection after 10 minutes
            _source.setNumHelperThreads(5);
            _source.setBreakAfterAcquireFailure(false);

            /* Test the connection */
            _source.getConnection().close();
        }
        catch(SQLException x)
        {
            if(Config.DEBUG)
                _log.fine("Database Connection FAILED");
            // rethrow the exception
            throw x;
        }
        catch(Exception e)
        {
            if(Config.DEBUG)
                _log.fine("Database Connection FAILED");
            throw new SQLException("could not init DB connection:" + e);
        }
    }

    public static L2DatabaseFactory getInstance() throws SQLException
    {
        if(_instance == null)
            new L2DatabaseFactory();
        return _instance;
    }

    public ThreadConnection getConnection() throws SQLException
    {
        ThreadConnection connection;
        if(Config.USE_DATABASE_LAYER)
        {
            String key = generateKey();
            //Пробуем получить коннект из списка уже используемых. Если для данного потока уже открыт
            //коннект - не мучаем пул коннектов, а отдаем этот коннект.
            connection = Connections.get(key);
            if(connection == null)
                try
                {
                    //не нашли - открываем новый
                    connection = new ThreadConnection(_source.getConnection());
                }
                catch(SQLException e)
                {
                    _log.warning("Couldn't create connection. Cause: " + e.getMessage());
                }
            else
                //нашли - увеличиваем счетчик использования
                connection.updateCounter();

            //добавляем коннект в список
            if(connection != null)
                synchronized (Connections)
                {
                    Connections.put(key, connection);
                }
        }
        else
            connection = new ThreadConnection(_source.getConnection());
        return connection;
    }

    public int getBusyConnectionCount() throws SQLException
    {
        return _source.getNumBusyConnectionsDefaultUser();
    }

    public int getIdleConnectionCount() throws SQLException
    {
        return _source.getNumIdleConnectionsDefaultUser();
    }

    public Hashtable<String, ThreadConnection> getConnections()
    {
        return Connections;
    }

    public void shutdown()
    {
        _source.close();
        Connections.clear();
        try
        {
            DataSources.destroy(_source);
        }
        catch(SQLException e)
        {
            _log.log(Level.INFO, "", e);
        }
    }

    /**
     * Генерация ключа для хранения коннекта
     *
     * Ключ равен хэш-коду текущего потока
     *
     * @return сгенерированный ключ.
     */
    public String generateKey()
    {
        return String.valueOf(Thread.currentThread().hashCode());
    }
}

Цитата:Вот непойму, почему все гонятся за обновлениями то?!
По теме, пСКЛ это замечательно, но МС былоб лучше
А в чём проблема со скриптами?На просторах всё есть и без хайда
Ну если что, пиши в аську ( есть в профиле ) помогу чем смогу

я не гонюсь Smile просто полезные функции.
НУу ч то с Лог сервером то ищо долго даже хоть до бета реализа.
Хочу сделать норм серв под х1 рейты гдетоSmile

Добавлено через 10 минут
Aquanox

Hibernate Core
An excellent Java framework, the Hibernate project provides nearly transparent persistence for Java classes. It supports association, inheritance, polymorphism, composition, and the standard Java collection classes. Instead of invasive inheritance, manual interface implementation, code generation, or post-processing, Hibernate uses run-time reflection at system initialization to generate SQL and proxy implementations.

The API and query language (HQL) have the object-oriented feel of Versant, yet Hibernate supports blazing fast access to MySQL Server, PostgreSQL, Oracle, DB2, and many other relational databases. Hibernate works well both inside and outside of application servers. Many programmers are beginning to consider Hibernate as a preferred alternative to CMP in J2EE environments.

Spring Framework
The Spring project provides a layered Java/J2EE application framework based on code published in Expert One-on-One J2EE Design and Development by Rod Johnson (Wrox, 2002). The Spring Framework includes:

A complete lightweight container, providing centralized, automated, and transparent configuration and wiring of your application objects.

A common abstraction layer for transaction management, allowing for pluggable transaction managers, and making it easy to demarcate transactions without dealing with low-level issues. In contrast to plain JTA or EJB CMT, Spring's transaction support is not tied to any J2EE environment.

A JDBC abstraction layer that simplifies error handling and greatly reduces the amount of code you need to write.

Integration with Toplink, Hibernate, JDO, and iBATIS SQL Maps.

First-class Hibernate support with lots of IoC convenience features, addressing many typical Hibernate integration issues.

Fully integrated AOP functionality meaning you can AOP-enable any object managed by Spring. For example, you can have declarative transaction management without EJB, even without JTA, if you're using a single database in Tomcat or another web container without JTA support.

A flexible MVC web application framework. This framework is highly configurable via strategy interfaces, and accommodates multiple view technologies like JSP, Velocity, Tiles, iText, and POI.

The ability to combine a Spring middle tier with any other web MVC framework, like Struts, WebWork, or Tapestry.

A layered architecture so that each piece of functionality builds on lower levels. So you can use the JavaBeans configuration management without using the MVC framework or AOP support. But if you use the MVC framework, because it builds on the configuration framework, you can apply knowledge about configuration management to the MVC framework immediately.

Use Spring's functionality in any J2EE server, and most of it also in non-managed environments. A central focus of Spring is to allow for reusable business and data access objects that are not tied to specific J2EE services. Such objects can be reused across J2EE environments (web or EJB), standalone applications, test environments and the like without any hassle.

Мне уже нравитсяSmile.можно посмотретьSmile
Ответ
#5
Я ведь написал что сфовский L2DatabaseFactory а не ребовский\ссровский.
Идея такова = есть маркер, отвечающий за текущий тип СУБД, все запросы идут в класс-генератор и в зависимости от маркера генерируют верный запрос.
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#6
тоисть сделать универсальный сервакSmile
Ответ
#7
VISTALL Написал:тоисть сделать универсальный сервакSmile

лучшеб занялся оптимизацией запросов а не адаптацией к новой субд.
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ
#8
адаптация почти законченаSmile. MySQL не знаю мне не по душе.я уже все перевёл на postgreSQL.
Оптимизация запрос итак идет потому-что все однно их переписываюSmile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Шара] Скрипты ПТС глори дейс и шлак по ИО. L2scripts-Guard 45 13,573 06-09-2016, 01:46 AM
Последний пост: Ashtone Grey
  Сборка RT и скрипты NPCBuffer L1KDE 7 1,942 12-27-2014, 05:24 AM
Последний пост: TARAN
  Где находятся скрипты РБ в l2jserver Сантехник 8 2,675 08-14-2013, 02:19 PM
Последний пост: Scream
  [PTS] Самая полная Gracia Final + RPG Club dll + original SQL + Authgate и не резанные скрипты RedStrife 6 5,790 06-19-2011, 09:39 PM
Последний пост: Perfecto
  Серверные скрипты - какими они должны быть? Aquanox 3 3,307 10-16-2010, 05:34 PM
Последний пост: 01000000

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)