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();
}
}
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协议也非常差,就不在继续研究了。%>_<%
这篇博客探讨了Apache Mina对HTTP协议支持的不足,提到Mina的作者的另一项目Asynweb也已停止更新。文中通过使用HTTPClient模拟HTTP请求来测试Mina作为Web服务器的功能,并展示了请求和响应的详细信息。由于Apache Mina的更新停滞及对HTTP协议支持不佳,作者决定不再深入研究。
885

被折叠的 条评论
为什么被折叠?



