Sunday, March 09, 2008

วันนี้ลง openfire เข้าคู่ xmpp4js ใหม่

เนื่องจากปัญหา http ที่ยุ่งยาก และวิธีแก้ที่ทำตาม forum ให้ set proxy มาเป็น localhost หรือ ทำ virtual host
นั้น พอใช้งานจริง chat ไปสักพักจะขึ้น error exception title is not object (ประมาณนี้)
แล้วก็เป็น error บน javascript ขึ้นมา

พอดีมีเวลา และพี่เติ้ลก็ให้เครื่องมาลองยำเองเลย
ก็เลยลบ ลงใหม่ให้หมด

เริ่ม ลบ openfire, ลบ xmpp4js, ลบ appserv, ลบ xampp (mysql ก็ไปด้วย ดีนะที่ไม่มีข้อมูล เพราะลืม backup)

เริ่มลงใหม่
ก่อนอื่นไป download software ที่เกี่ยวข้อง

เนื่องจากอ่านในเวบนี้ http://zeank.in-berlin.de/jhb/
พูดถึง http-bind เอาไว้ง่ายๆว่าเป็น package servlet ให้เอาไป deploy แล้วก็จะเล่น jabber http-bind เจ้าปัญหาได้
และถ้ามีปัญหาก็ไปโหลด package jar file เพิ่มก็จะแก้ได้
ดูๆน่าจะง่ายกว่าการ config จริงๆตอนแรกไม่รู้หรอกว่ามันจะช่วยเรายังไง แต่ฟางเส้นเดียวก็ต้องคว้าเอาไว้ก่อน เลยโหลดเอาไว้ ทั้ง .war และ source
ระวังเวลาโหลดแล้วมันจะเปลี่ยน .war เป็น .zip ผมแก้กลับ กันไว้ก่อน

ดังนั้นเราตค้องหา webserver ที่ run servlet ได้ ก็ง่ายๆอีกก็คือ Tomcat แต่ลอง check ดูว่า Xampp ของเราสามารถ run Servlet ได้ด้วยมั้ย.. ไปเจอ plugin ว่าสามารถลง Tomcat เป็น plugin ได้ เลยโหลดมาทั้ง xampp ตัวใหม่ 1.6.6a และ Tomcat plugin (แต่สุดท้ายตัว xampp ดันโหลดไม่สมบูรณ์ เลยไปใช้ตัวเก่า xampp1.6.5) ส่วน link ก็นี่ http://www.apachefriends.org/en/xampp-windows.html (เกือบลืม)

ลงไปมันทั้ง xampp และ Tomcat ลงเสร็จถึงรู้ว่ามันแยกกัน Run ก็เดาๆไว้แล้วว่าต้องแยก port 8080 เป็นของ Tomcat และ port 80 ของ php แหงมๆ ก็เป็นไปตามนั้น

จากนั้นเอา xmpp4js มาลง จากเวบเดิม ยังเป็น SNAPSHOT0.2 อยู่
เจ้าของก็นี่ http://blog.devspan.com/2008/02/xmpp4js-initial-release.html
ตัว source ก็นี่ http://sourceforge.net/project/showfiles.php?group_id=209465&package_id=251329&release_id=579308

ดูๆแล้วโหลดมาทั้ง ตัวเปล่าๆและตัว with lancher (แบบ double คลิ๊ก run ได้เลย)
แต่ดูการวาง Folder แล้ว เอาตัวหลังมาใช้ดีกว่า เพราะเคยเห็นแต่วางแบบนี้ (ไม่ต่างกันมั้ง) ตัดเอาแต่ส่วนของ root มาใส่ใน webapps
แก้ชื่อ Folder ใหม่เป็น xmpp4js ลอง run ดู (อย่าลืมแก้ destination ใน simple file ที่เป็น html และใน xmpp4js.js -- มั้งนะจำชื่อไม่ได้ ตัว javascript ที่เป็นตัวหลัก-- อันนี้แต่ groupchat -- มันดัน fix destination อยู่นิ)

error จะเห็นได้ชัดเจนว่า มันเรียกร้องหา http-bind และบอกประมาณ http-bind cannot reach
ตอนแรกจะไปแก้ที่ virtualhost แต่คิดก็ลืมไป เพราะยังไม่ลง openfire จะมี http-bind ได้ไง
ตอนนี้ชี้ ไปที่ server จริงเลย ก็ว่าจะชี้ proxy ไปที่ server จริงตามไป ถ้าไม่ได้ ก็ลง openfire บนเครื่องพี่เติ้ลนี้

แต่คิดๆอีกที เรามาลองใช้ package http-bind ที่โหลดมาตอนแรกดีกว่า แค่ deploy war file เอง หมูๆ ถ้าได้ก็เฮ..
เลยก็อบไปวางไว้บน xampp/tomcat/webapps ก็คือ webapps ของ tomcat นั่งเอง
พอวางปุ้บอารามใจร้อน ไปลองเลย ก็เละอยู่ดี error เหมือเดิม
ไปดูที่ Folder ที่ Tomcat extract ออกมา ก็อ๋อ เพราะ Folder มันเป็นชื่ออื่น เลยจัดการเปลี่ยนมันซะ เป็น /http-bind
ลองเรียน 127.0.0.1/http-bind ก็ขึ้นเป็น servlet ตอบรับดีซะด้วย อย่างนี้มีลุ้น..

เลยลองอีกทีคราวนี้ลง psi มาอีกตัวเป็นคู่คุยกันเพื่อทดสอบ ปรากฏว่า psi เห็น user ที่ on ด้วย xmpp4js เป็น offline
แต่ว่า มันสามารถคุยกันได้ นิ้งงงเลย... ไม่มี error title null อีกแล้ว
เหอๆ มาจดไว้เท่านี้แหละ ยังไม่กล้าลง openfire บนเครื่องตัวเอง ยิงไป server จริงไปก่อนจนกว่าจะมีเครื่องใหม่
กลัว http-bind มันตีกัน

=====

ขอเพิ่มเติมอีกนิด
พอดีวันนี้กลับมาดูเพื่อจะลองลง http bind เพื่อเข้าคู่กับ Connection manager เนื่องจากสันนิษฐานว่า
http-bind ของ CM น่าจะคล้ายๆของ XMPP4JS หรือ soashable นี่แหละ

แต่พอเอา .war ไป deploy กลับเกิดอาการ unsupported class version error ก็รู้ว่าต้องแก้ด้วยการลง Jdk ตัวใหม่ (Jdk6 ก็พอ) แต่ลงใหม่ก็แล้ว set JAVA_HOME ใน Enviromentsetting ก็แล้วไม่หาย

ตอนหลังจึงมารู้ว่า Tomcat ที่ start ด้วย bat file (ที่ผมลงจาก plugin ของXaMPP นั้นหละ)
มันดันมีการ set JAVA_HOME ใหม่เฉย

ต้องแก้ด้วย ใช้ Jdk5 แล้วมีปัญหา ต้องแก้ที่ script ตรงๆด้วย พอแก้แล้วก็ deploy ได้ปกติเลย

No comments: