接上一篇: http://618119.com/archives/2007/11/29/34.html
针对每个SMPPPacket的处理,将其以接口方式进行处理,接口定义如下:
- package com.lizongbo.smpp.server;
- import org.apache.mina.common.IoSession;
- import ie.omk.smpp.message.SMPPPacket;
- import ie.omk.smpp.BadCommandIDException;
- public interface SMPPPacketHandler {
- void process(IoSession session, SMPPPacket packet) throws
- BadCommandIDException;
- }
package com.lizongbo.smpp.server; import org.apache.mina.common.IoSession; import ie.omk.smpp.message.SMPPPacket; import ie.omk.smpp.BadCommandIDException; public interface SMPPPacketHandler { void process(IoSession session, SMPPPacket packet) throws BadCommandIDException; }
SMPPServerSessionHandler中通过commandid来找到相应的handler,然后进行处理.
- package com.lizongbo.smpp.server;
- import java.util.*;
- import org.apache.mina.common.*;
- import ie.omk.smpp.*;
- import ie.omk.smpp.message.*;
- import ie.omk.smpp.version.*;
- public class SMPPServerSessionHandler
- extends IoHandlerAdapter {
- private Map<Long,
- SMPPPacketHandler> handles = null;
- private int readerIdleTimeout = 120;
- public void sessionOpened(IoSession session) throws Exception {
- session.setIdleTime(IdleStatus.READER_IDLE, readerIdleTimeout);
- }
- public void messageReceived(IoSession session, Object message) throws
- Exception {
- SMPPPacket packet = (SMPPPacket) message;
- // System.out.println(”收到消息” + packet);
- int id = packet.getCommandId();
- if (!SMPPVersion.getDefaultVersion().isSupported(id)) {
- StringBuffer err = new StringBuffer(120)
- .append(SMPPVersion.getDefaultVersion().toString())
- .append(” does not support command ID 0x”)
- .append(Integer.toHexString(id));
- throw new VersionException(err.toString());
- }
- long l = id & 0×00000000FFFFFFFFl;
- // Integer.decode(”0×80000005″)要出错,被迫用Long类型,
- //因此在这里需要将整数的id通过高位补0来实现,而不能直接进行强类型转换
- SMPPPacketHandler handler = handles.get(Long.valueOf(l));
- if (handler != null) {
- handler.process(session, packet);
- }
- else {
- //System.out.println(”丢弃的消息为:” + id + packet);
- //throw new BadCommandIDException();
- }
- }
- public Map getHandles() {
- return handles;
- }
- public int getReaderIdleTimeout() {
- return readerIdleTimeout;
- }
- public void setHandles(Map handles) {
- this.handles = handles;
- }
- public void setReaderIdleTimeout(int readerIdleTimeout) {
- this.readerIdleTimeout = readerIdleTimeout;
- }
- }
相关推荐
3. **mina-protocol-XXX**:MINA提供了多种协议实现,如TCP、UDP、SSL/TLS等,这些协议的实现库可能包含在压缩包中。 4. **mina-handler-XXX**:这些可能是MINA提供的各种处理器,如协议编解码处理器、日志处理器、...
5. **安全与权限控制**:可以配置SSL/TLS加密传输,以及用户访问权限,确保数据安全。 总之,Apache FtpServer提供了一套完整的FTP服务解决方案,并且能够很好地融入Spring生态,使得在Java应用中搭建和管理FTP...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...
WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...