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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто работал из J2EE c SMPP 3.4? Где можно почитать, посмотреть примеры? 
:(
    Опции темы
VSergeyV
Дата 6.7.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



Кто работал из J2EE c SMPP 3.4?
Где можно почитать, посмотреть примеры? 
PM MAIL ICQ   Вверх
AntonSaburov
Дата 7.7.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



В принципе надо зайти на http://smsforum.net/ и там посмотрать ссылку SMPP tools.

В принципе у меня есть пример работы, но к сожалению он не мой и распространять в исходниках его я не имею права. Может быть получится подрезать и тогда выложу. 
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 7.7.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Порезал сильно, но в принципе общая идея должна быть понятна.
По сути запускается демон (Daemon), который подключается к SMPP серверу и начинает слушать приходящие сообщения через класс EventListener.
Есть там еще класс Poster - он просто должен был делать кое-какую работу после прихода сообщения. В принципе он уже не нужен, но я хотел, чтобы приложение хотя бы собиралось.

Для сборки необходимо скачать SMPP от SourceForge - OpenSMPP. Его можно найти по ссылке в предыдудщем сообщении. И также нужен Log4j - у меня версия 1.2. Но думаю. что можно и старее.

Вообщем разбирайтесь - удачи.

Код

import org.apache.log4j.Logger;
import org.smpp.Data;
import org.smpp.ServerPDUEventListener;
import org.smpp.Session;
import org.smpp.TCPIPConnection;
import org.smpp.pdu.BindReceiver;
import org.smpp.pdu.BindRequest;
import org.smpp.pdu.Response;
import org.smpp.pdu.WrongLengthOfStringException;


public class Daemon {
    private static final Logger LOG = Logger.getLogger(Daemon.class);
    private static Session session;

    private boolean bound = false;
    private EventListener eventListener = new EventListener();

    public static synchronized Session getCurrentSession() {
        return session;
    }

    private void start() {
        new Thread(new Poster(eventListener)).start();

        synchronized (Daemon.class) {
            session = getSession();
        }

        bind();

        try {
            if (bound)
                for (; ;) { // forever
                    Thread.sleep(5000L);
                    session.enquireLink();
                }
            else
                LOG.warn("Unable to bind, exiting");
        }
        catch (InterruptedException e) {
            LOG.warn("Sleep interrupted, exiting");
        }
        catch (Exception e) {
            LOG.error("Unable to enquire link", e);
        }
    }

    private Session getSession() {
        return new Session(new TCPIPConnection("SMPP_HOST", 10)); // Host and Port
    }

    private BindRequest getReceiver() throws WrongLengthOfStringException {
        BindRequest bindRequest = new BindReceiver();
        bindRequest.setSystemId("SMPP_LOGIN");
        bindRequest.setPassword("SMPP_PASSWORD");
        return bindRequest;
    }

    private void bind() {
        LOG.debug("Entering bind(), thread id = " + Thread.currentThread().getId());
        if (bound) return;

        Response resp;
        try {
            resp = session.bind(getReceiver(), eventListener);
        }
        catch (Exception e) {
            LOG.error("Unable to bind", e);
            return;
        }
        bound = resp.getCommandStatus() == Data.ESME_ROK;
        LOG.debug("Bind succeed, result = " + bound + ", thread id = " + Thread.currentThread().getId());
        System.out.println("Check LOG4J");
    }

    public static void main(String[] args) {
        Daemon daemon = new Daemon();
        daemon.start();
    }
}



Код

import org.apache.log4j.Logger;
import org.smpp.ServerPDUEvent;
import org.smpp.ServerPDUEventListener;
import org.smpp.Session;
import org.smpp.pdu.*;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ArrayBlockingQueue;


public class EventListener implements ServerPDUEventListener, PDUSource {
    private static final Logger LOG = Logger.getLogger(EventListener.class);

    private BlockingQueue<PDU> documentQueue = new ArrayBlockingQueue<PDU>(8);

    public PDU fetchPDU() throws InterruptedException {
        return documentQueue.take();
    }

    public void handleEvent(ServerPDUEvent event) {
        PDU pdu = event.getPDU();
        LOG.debug("Got PDU: " + pdu.debugString());
        if (pdu.isValid() && pdu.isRequest()) {
            Response response = ((Request) pdu).getResponse();

            Session session = Daemon.getCurrentSession();
            try {
                session.respond(response);
            }
            catch (Exception e) {
                LOG.error("Unable to send response", e);
                return;
            }

            if (pdu instanceof DeliverSM) {
                LOG.info("Got Submit SMS");
                DeliverSM deliverSM = (DeliverSM) pdu;
                LOG.debug("Destination address: " + deliverSM.getDestAddr().getAddress());
                LOG.debug("Source address: " + deliverSM.getSourceAddr().getAddress());
                LOG.debug("SMS length: " + deliverSM.getSmLength());
                LOG.debug("SMS: " + deliverSM.getShortMessage());

                boolean status = documentQueue.offer(pdu);
                if (! status) {
                    LOG.error("Unable to place the PDU into the queue, loosing it... :-(");
                }
            }
        }
    }
}



Код

import org.smpp.pdu.*;

public interface PDUSource {
    PDU fetchPDU() throws InterruptedException;
}



Код

import org.apache.log4j.Logger;

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.MalformedURLException;
import java.io.IOException;
import java.io.OutputStream;
import org.smpp.pdu.*;

public class Poster implements Runnable {
    private final static Logger LOG = Logger.getLogger(Poster.class);

    private PDUSource pduSource;
    private URL url;


    public Poster(PDUSource pduSource) {
        this.pduSource = pduSource;
    }

    public void run() {
        try {
            for (;;) {
                PDU pdu = pduSource.fetchPDU();
                // Делайте с этим PDU что надо - у него есть поля, которые можно посмотреть
                // в файле EventListener.java
            }
        }
        catch (InterruptedException e) {
            LOG.warn("Interrupted, exiting...");
        }
    }
}
 
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 7.7.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Забыл предупредить - собрается все на Java 1.5 - не ниже. 
PM MAIL WWW ICQ   Вверх
VSergeyV
Дата 7.7.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

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



Окей, большое благодарю 
PM MAIL ICQ   Вверх
AntonSaburov
Дата 7.7.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Да заходите почаще - у нас наверно один из самых сильных русскоязычных форумов на сегодня. Так что вопросы в большинстве случаев решаются. 
PM MAIL WWW ICQ   Вверх
Achilles
Дата 26.7.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Еще один вариант. http://opensmpp.logica.com
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.0756 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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