android mina分析,Android与Mina整合

最近想在自己做的安卓手机应用中加入即时聊天功能,于是想到了用Mina来实现,也是由于自己想着偷懒,借用了官方的example中chat的相关代码,经过一番改造,很快就能在java环境中正常运行了。确认没问题后,将client端代码移到了Android中,但是移植过程中并不顺利,每次都是Java.lang.NoclassDefFoundError,提示java.lang.NoClassDefFoundError: org/apache/mina/core/filterchain/IoFilterEvent,但实际上这个类是存在的,一时间不知道问题出在哪。

源码如下:

public boolean connect(NioSocketConnector connector, SocketAddress address,

boolean useSsl) {

if (session != null && session.isConnected()) {

throw new IllegalStateException(

"Already connected. Disconnect first.");

}

try {

IoFilter LOGGING_FILTER = new LoggingFilter();

IoFilter CODEC_FILTER = new ProtocolCodecFilter(

new TextLineCodecFactory());

connector.getFilterChain().addLast("mdc", new MdcInjectionFilter());

connector.getFilterChain().addLast("codec", CODEC_FILTER);

connector.getFilterChain().addLast("logger", LOGGING_FILTER);

if (useSsl) {

SSLContext sslContext = BogusSslContextFactory

.getInstance(false);

SslFilter sslFilter = new SslFilter(sslContext);

sslFilter.setUseClientMode(true);

connector.getFilterChain().addFirst("sslFilter", sslFilter);

}

connector.setHandler(handler);

ConnectFuture future1 = connector.connect(address);

future1.awaitUninterruptibly();

if (!future1.isConnected()) {

return false;

}

session = future1.getSession();

login();

return true;

} catch (Exception e) {

return false;

}

}

原本以为是安卓版本或者Mina版本的问题,结果尝试了几个版本都存在同样的问题,只好慢慢找原因。最终找到原因,只要加入了mdc过滤器,那么就会报这样的错误,所以在Server端和Client端都注掉acceptor.getFilterChain().addLast("mdc", new MdcInjectionFilter())这一行,之后一切恢复正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值