apache mina: mina对http协议支持

这篇博客探讨了Apache Mina对HTTP协议支持的不足,提到Mina的作者的另一项目Asynweb也已停止更新。文中通过使用HTTPClient模拟HTTP请求来测试Mina作为Web服务器的功能,并展示了请求和响应的详细信息。由于Apache Mina的更新停滞及对HTTP协议支持不佳,作者决定不再深入研究。


apache  mina对http支持力度不够,apache mina作者的另外一个开源项目asynweb 也因为年久了,不在更新。

本次测试使用httpclient 来模拟http请求, 使用apache  mina作为web服务器。


httpclient测试代码:

/**
 * This example demonstrates the recommended way of using API to make sure 
 * the underlying connection gets released back to the connection manager.
 */
public class ClientConnectionRelease {
    public final static void main(String[] args) throws Exception {
        HttpClient httpclient = new DefaultHttpClient();

        HttpGet httpget = new HttpGet("http://localhost:8080"); 

        // Execute HTTP request
        System.out.println("executing request " + httpget.getURI());
        HttpResponse response = httpclient.execute(httpget);

        System.out.println("----------------------------------------");
        System.out.println(response.getStatusLine());
        System.out.println("----------------------------------------");



        // When HttpClient instance is no longer needed, 
        // shut down the connection manager to ensure
        // immediate deallocation of all system resources
        httpclient.getConnectionManager().shutdown();        
    }
}


apache  mina   httpserver代码:

public class HttpServer extends IoHandlerAdapter
{
	@Override
	public void messageReceived(IoSession session, Object message)
			throws Exception {
		if(message instanceof  HttpRequestImpl)
		{
			//对httprequest 解析的支持,但是支持力度不够
			HttpRequestImpl request =(HttpRequestImpl)message;
			System.out.println("****messageReceived*****"+request.toString());
			
			HttpVersion ver=HttpVersion.HTTP_1_1;
			HttpStatus status=HttpStatus.SUCCESS_OK;
			Map<String, String> headers =new HashMap<String, String>();
			DefaultHttpResponse response =new DefaultHttpResponse(ver,status,headers );
			session.write(response);
			//当数据写完后,才关闭通道
			session.close();
		}
	}
	public HttpServer() 
	{
		IoAcceptor acceptor =new NioSocketAcceptor();
		//http 协议解析
		acceptor.getFilterChain().addFirst("httpcodec", new ProtocolCodecFilter(new HttpServerEncoder(),new HttpServerDecoder()));
		acceptor.setHandler(this);
		try {
			acceptor.bind(new InetSocketAddress(8080));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) 
	{
		HttpServer httpServer=new HttpServer();

	}
}

httpserver服务端打印:

****messageReceived*****HTTP REQUEST METHOD: GET
VERSION: HTTP/1.1
PATH: /
QUERY:
--- HEADER --- 
connection:Keep-Alive
host:localhost
user-agent:Apache-HttpClient/4.1 (java 1.5)
--- PARAMETERS --- 


messageSent:HTTP RESPONSE STATUS: SUCCESS_OK
VERSION: HTTP/1.1
--- HEADER --- 

httpclient端打印:

executing request http://localhost:8080
----------------------------------------
HTTP/1.1 200 OK
----------------------------------------

apache  mina  已经不在更新,依赖mina建立的项目也不更新了,apache mina 对http协议也非常差,就不在继续研究了。%>_<%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值