¾¹ý³¤Ê±¼äµÄŬÁ¦£¬Voovan ¿ªÔ´ÏîÄ¿ÖÕÓÚ½Ó½ü1.0Ê׸ö°æ±¾µÄ·¢²¼£¬½ñÌì·Å³öµÄÊÇ v1.0-alpha¡£
ÔÚÕâ¶Îʱ¼äÄÚÏîÄ¿¾ÀúÁË:ѹÁ¦²âÊÔ,ÐÔÄÜÓÅ»¯,ÒÔ¼°²¿·ÖÄ£¿éµÄÖØ¹¹.ͬʱҲΪ´ó¼Ò´øÀ´µÄ»ùÓÚ Voovan HttpServer µÄÐÔÄÜ¼à¿ØÄ£¿é(»ùÓÚĿǰÏîÄ¿µÄÐÔÄÜ·ÖÎö)ΪÔËÐÐÔÚ Voovan ·þÎñÉϵÄÓ¦Óõ÷ÓÅ×öÁËÒ»¸ö³õ²½µÄÆÌµæ.
±¾´Î alpha °æ±¾ÖØ´ó¸üÐÂ:
Aio/Nio Ò첽ͨÐÅ¿ò¼ÜÐÔÄܵÄÓÅ»¯.
HttpServer »ùÓÚ HTTP1.1 ¶Ô HTTPS µÄÖ§³Ö
JDBCOperate Àà¶Ô´æ´¢¹ý³ÌµÄÖ§³Ö¼°ÊÂÎïµÄµ÷ÓÅ
¶ÔÓÚ SQL ²Ù×÷ÖÐÎÞ¶ÔÓ¦Êý¾ÝÖ§³ÖµÄռλ²ÎÊý×Ô¶¯ÒƳý.±ÜÃâ¶à¸öÌõ¼þ×éºÏ²éѯÖеĿÕÌõ¼þµ¼ÖµÄÎÞ½á¹û¼¯
HttpServerµÄÁ´Ê½²Ù×÷Ö§³Ö.
HttpServerÐÔÄÜ¼à¿ØÄ£¿é[ISSUS]
ÒÔÏÂÊÇv1.0-alpha µÄ¸üÐÂÄÚÈÝ:
BUGÐÞ¸´:
ʹÓüàÊÓ¹ýÂËÆ÷µÄʱºò,ͳ¼ÆµÄ´¦Àíʱ¼äûÓаüº¬¹ýÂËÆ÷´¦ÀíµÄʱ¼ä,½«¼àÊÓ¹ýÂËÆ÷(HttpMonitorFilter)´Ó¹ýÂËÆ÷Á´µÄ×îºóÒ»¸öµ÷Õûµ½µÚÒ»¸ö
Http·þÎñµÄ¹ýÂËÆ÷¶ÔÏóÎÞ·¨Çø·ÖÊÇÇëÇó»¹ÊÇÏìÓ¦µÄµ÷ÓÃ,½«ÔÀ´µÄ doFilter·½·¨É¾³ý,²¢Ôö¼Ó onRequest ºÍ onResponse ·½·¨,²ÎÊýÏàͬ.
HttpServer ¾²Ì¬Îļþ ETag ÔÚÎļþ·¾¶²»¸Ä±äʱ²»»á·¢Éú±ä»¯µÄ²»¹ý,µ¼ÖÂÎļþÒ»µ«±»¼ÓÔØ¾Í»áÒ»Ö±·µ»Ø304µÄÎÊÌâ
ÐÞ¸´ Connection reset by peer ´íÎóºó,µ¼ÖµÄËÀÑ»·Ïß³ÌÎÞ·¨½áÊøµÄÎÊÌâ
¶à¸öfilterÖ´ÐÐ˳ÐòµÄÎÊÌâ
getObjectFromMap·½·¨¸´ÔÓ¶ÔÏóʱ¶Ô Map µÄ value Ϊ null µÄ bug ´¦Àí
getObjectFromMap·½·¨Öع¹²¢ÓÅ»¯,¶Ô»ù±¾ÀàÐÍ(int,float,long)µÄÖ§³Ö,ÒÔ¼° Date ·½·¨ bug ´¦Àí
Http ÏûÏ¢½Ø¶ÏÆ÷ µÄ boundary Åжϱ¨ÎĽáÊøÅжϵÄÎÊÌâ
µ±ÈÕÖ¾ÎļþĿ¼²»´æÔÚʱ×Ô¶¯´´½¨,ÇÒÈÕÖ¾Îļþ²»´æÔÚʱÌáʾ,²¢Ö»Êä³öÆäËûÈÕÖ¾
½â¾ö SSL Á¬½Ó handshake Ïß³Ìͬ²½µÄÎÊÌâ
½â¾ö·¢ËÍÊÇ»º³åÇøÂú£¬ºóÐø×Ö½ÚûÓмÌÐø·¢Ë굀 bug
Logger.javaÖÐsimple·½·¨´æÔڵݹéËÀÑ»·µÄ·çÏÕ
KeepAlive ¶¨Ê±Æ÷¶ÔÏó²»Ïú»ÙµÄÎÊÌâ
WEBSOCKETÁ½´Î¹Ø±ÕʼþµÄ bug ´¦Àí
JSON ½âÎöµÄÊý¾ÝΪ long ʱûÓзµ»ØÕýÈ·µÄÊýÖµ
½â¾öJdbcOperateÒì³£ºóÁ¬½Ó³ØÐ¹Â¶µÄÎÊÌâ
¶ÔSQL ²Ù×÷¿Õ½á¹û¼¯(null)µÄÒì³£
JdbcOperator º¯Êý³åÍ»
µ±Í¬Ò»½ø³ÌÄÚ¶à¸ö socket ͬʱ¹¤×÷£¬»áÔÚ socket ¹Ø±Õʱ¹Ø±ÕÏ̳߳Ø,ÏÂÒ»¸ö socket ÔòÎÞ·¨·ÃÎʵ½Ï̳߳Ø
Socket SSLͨÐÅÔÚÎÕÊÖûÓÐÍê³Éʱ¿ªÊ¼½ÓÊÜÏûÏ¢µ¼ÖÂÒì³£
ÿ´Î·ÃÎʺó Session µÄ³¬Ê±Ê±¼äûÓÐË¢ÐÂ
JSONÊý×é½âÎö×îºóÒ»¸öÔªËØºÍ"]"Ö±½Ó»á±»Îó½âÎöΪһ¸öÔªËØ
»»ÐÐÏûÏ¢½Ø¶ÏʵÏÖÀà´¦ÀíÒì³£ÔʼÅжÏÂß¼\r »òÕß\n ÅжÏΪ»»ÐÐ. µ« window ÒÔ\r\n»»ÐУ¬µ¼Ö¶ϰüÏÂÒ»¸öÏûÏ¢µÄÆðʼ×Ö·û¶àÁËÒ»¸ö\n
HTTP ChunkedÏìÓ¦±¨ÎĽáÊøÅжÏÂß¼ÎÊÌâ
POST µÄ multipart/form-dataÀàÐͲÎÊý½âÎöÒì³£
JSON ת¶ÔÏóʱÈç¹ûÓÐ×¢ÊÍ»áʧ°Ü.Èç¹ûJSONת¶ÔÏóʧ°Ü²»»áÔÙ·µ»Ø½âÎöºóµÄ Map,¶øÊÇ·µ»Ønull.
ÓÅ»¯ Http ÏûÏ¢·Ö¶ÎËã·¢
ÓÅ»¯ÄÚÈÝ:
ÔÚʹÓüàÊÓ¹ýÂËÆ÷µÄʱºò,ͳ¼ÆµÄ´¦Àíʱ¼äûÓаüº¬¹ýÂËÆ÷´¦ÀíµÄʱ¼ä,½«¼àÊÓ¹ýÂËÆ÷(HttpMonitorFilter)´Ó¹ýÂËÆ÷Á´µÄ×îºóÒ»¸öµ÷Õûµ½µÚÒ»¸ö
³éÀë³öÄÚ²¿Àà FilterConfig2.Ϊ HttpRequest Ôö¼Ó attribute
ÐÞ¸Ä HttpBizFilter µÄ·½·¨,Ôö¼ÓÁË·µ»ØÖµÍù¸´µÄ´«µÝ»úÖÆ,ÓÃÓÚ¿ØÖƹýÂËÈ¥µÄ״̬
Ϊ HttpServer ÌṩÁËÁ´Ê½µ÷Ó÷þÎñ
Ôö¼Ó Http ·þÎñ¼à¿ØÄ£¿é
TFile ÖÐÔö¼Ó¶ÁÈ¡Îļþ×îºó¼¸ÐеÄÐÐÊýpublic static byte[] loadFileLastLines(,)
ÔÚ Web.json ÖÐÔö¼ÓÊÇ·ñÊä³ö access.log ÈÕÖ¾ÎļþµÄ¿ØÖÆ
Body ¶ÔÏóÔö¼Ó³¤¶ÈÅжϺ¯Êýsize()
·´Éä·½·¨Ôö¼ÓºöÂÔÊôÐÔÃû´óСдµÄ findField ·½·¨
¼Ó queryObject ºÍ queryObjectList µÈ·½·¨,±íµÄÁÐÃû ºÍ ¶ÔÏóµÄÊôÐÔÃûµÄÄ£ºýÆ¥Åä
Ò첽ͨÐÅÀàʹÓ÷ÇÕ»ÄÚ´æ¹ÜÀí»º³åÇøÌá¸ßÐÔÄÜ
JdbcOperate Ìṩ´æ´¢¹ý³Ìµ÷Ó÷½·¨
ÔÚδ¶ÁÈ¡µ½Êý¾Ýʱ²»½øÐÐÏûÏ¢½Ø¶ÏµÄÅжÏ
Ôö¼Ó SSL Á¬½Ó ÎÞ¿Í»§¶ËÈÏ֤ģʽ
Ôö¼Ó TimeOutMessageSplitter£¬²¢ÇÒÔÚ Aio ºÍ NioÖÐʵÏÖÈç¹ûûÓÐÌí¼ÓMessageSplitter£¬ÔòʹÓÃTimeOutMessageSplitter×÷ΪĬÈÏ
Ôö¼Óµ¥ÈÕÖ¾Êä³öÀàÓÃÓÚ²¹³äÊä³öÌØ¶¨µÄÈÕÖ¾Îļþ SingleLogger
Ò첽ͨÐŰüµÄ IoSession ÀàµÄ send ·½·¨ÐÞ¸ÄΪ public,µ«Òª×¢Òâ¸Ã·½·¨²»»á³ö·¢ on Sent ʼþ
ΪHttpServer Ôö¼Ó·ÃÎÊÈÕÖ¾ access.log
¶ÔĬÈϵÄWEB ·þÎñµÄ¸ù·¾¶½øÐÐÓÅ»¯,¿ÉÒÔ×Ô¶¯Ê¶±ðÏà¶ÔºÍ¾ø¶Ô·¾¶
TFile Ôö¼ÓÎļþдÈ뺯Êý(²ÉÓÃÁ÷µÄÐÎʽ)
TFile Ôö¼ÓÈ¡Îļþ´óСµÄº¯Êý
TFile ¶ÁÈ¡ÎļþµÄʱºòûÓÐÓÃUTF-8תÂë,¶Á²»³ö´øÖÐÎÄ·¾¶µÄÎļþ
Logger.simpleÖ§³ÖÈÕÖ¾Ëõ½ø(/s,/t)
Logger Ôö¼ÓÈÕÖ¾Êä³ö¿ØÖÆ·½·¨setState()
Ϊ HttpClient ¶ÔÏóÔö¼Ó putHeader ·½·¨
HttpClientÔÚÁ¬Ðø²»¶ÏµÄ·¢ËÍÇëÇóʱCookie×Ô¶¯Áô´æ
½« HTTPClient Ð޸ijɿÉÒÔ²»¹Ø±ÕÁ¬½Ó³ÖÐø²»¶ÏµÄ·µËÍ HTTP ÇëÇó.
JdbcOperate ʹÓÃ":"À´±êʶ²ÎÊý»áºÍʱ¼ä¸ñʽ³åÍ»,Ð޸ijÉ"::"±êʶ²ÎÊý
ÈÕÖ¾¹¤¾ßÒì³£´¦Àí,±ÜÃâÒòÈÕÖ¾Òì³£µ¼Ö½ø³Ì½áÊø.
Ôö¼ÓHTTPClient ×Ô¶¨ Cookie µÄ¹¦ÄÜ
ÐÂÔöJSONDecode ÖÐ¶Ô Long µÄÖ§³Ö
Log ÈÕÖ¾¹¤¾ßÐèÒª×Ô¶¯·Ö¸îÉú³ÉÿÌìµÄÈÕÖ¾Îļþ
Ϊ HTTP ·þÎñÔö¼Ó¹ýÂËÆ÷Ö§³Ö
¶ÔÇëÇó²ÎÊý£¬ÔÚ¹¹Ôìʱ×Ô¶¯Ê¹ÓÃ×Ö·û¼¯²ÎÊý½øÐбàÂë
Part ¶ÔÏóÔö¼Ó¹¹Ôì,¿ÉÖ±½ÓÓù¹Ô캯Êý¹¹Ôì¼òµ¥Part£¬²¢Ìṩ×Ö·û¼¯Ö§³Ö
Http ÇëÇó¶ÔÏóÔö¼Ó¸ù¾ÝÇëÇóÀàÐÍ×Ô¶¯ÌîдContentType.
Ôö¼Ó Connection: keep-alive Í·£¬±ÜÃâ HTTP ±¨Îı»·þÎñ¶Ë¶Ï¿ªÁ¬½Óºó½ÓÊܱ¨ÎIJ»Íê³É
Ôö¼Ó°´»»Ðзµ»ØÏûÏ¢·Ö¸îÆ÷
Ôö¼Ó°´¶¨³¤·µ»ØÏûÏ¢·Ö¸îÆ÷
ÏÂÔØµØÖ·£ºhttps://git.oschina.net/helyho/Voovan/wikis/home
À´×Ô:¿ªÔ´ÖйúÉçÇø

