วันพุธ, กุมภาพันธ์ 04, 2558

แก้ปัญหา JRebel ใช้งานไม่ได้ ค้างที่ Contacting myJRebel server ..

วันดีคืนดีหลังจาก upgrade version jrebel จาก version 5 เป็น version 6 จู่ๆ tomcat ก็ start ไม่ขึ้น ต้อง kill process ลูกเดียว วันดีคืนดีมันก็ start ได้ แต่โอกาสคือ 1 ใน X ครั้ง เรียกว่าฟลุ๊คเท่านั้นดีกว่าที่จะ start ได้ มันค้างอยู่ตรง message

...
JRebel-Licensing-myJRebel: Contacting myJRebel server ..
...

  JRebel คืออะไร มันเป็นเครื่องมือตัวหนึ่ง ที่เอามาผูกการทำงานเข้ากับ java container (tomcat, weblogic, websphere ฯ) แล้วทำให้ code ที่เราเขียนจะถูก reload ให้เลย ไม่ต้องสั่ง stop/start container นั้นใหม่ ประหยัดเวลามาก ถึงมากที่สุด

ส่วนวิธีใช้ลองไปศึกษา JRebel พลางๆที่ website ของ JRebel นะครับ

  ผมใช้ jrebel ด้วย license แบบ social license คือเค้าจะขอ tweet สถิติการใช้งาน jrebel ของ account เรา ประมาณว่าประหยัดเวลาให้เราในการ stop/start java container ไปมากเท่าไหร่ โดย license  ทั่วไปหากใช้งานคนเดียว single developer เค้าคิดวันละ 1 USD แต่เก็บเป็นรายปี

เข้าเรื่องดีกว่า วิธีแก้ไข

    ทดลองเปิด debug log โดยใส่ java parameter (JAVA_OPTS) เข้าไป -Xdebug -Drebel.log=debug แล้วไปดู jrebel.log โดยมันจะถูกสร้างเอาไว้ที่ /Users/siritas_s/.jrebel
ก็ยังไม่เจออะไรนอกจากเห็นว่ามันโหลด plugins มากมายเต็มไปหมด (น่าจะเป็น plugin สำหรับให้มัน reload classes ของ framework เจ้าดังๆได้ถูกต้อง)

  และจากที่ไปลองค้นๆอ่านๆใน forum support ของ jrebel เค้าแนะนำให้
* โหลด version nightly มาใช้  หรือ/และ
* ทดลองปิด plugin ทั้งหมดดูก่อน ทำได้โดยการใส่ option rebel.load_embedded_plugins=false ใน jrebel.properties

การปิด plugin ทั้งหมด 
Modify .jrebel/jrebel.peoperties:
...
rebel.load_embedded_plugins=false
...

  เห้ย..ย ได้ผล! jrebel กลับมาใช้งานได้อีกครั้ง วิ่งผ่าน Contacting myJRebel server .. แล้วแสดง banner ได้เหมือนปกติ
...
015-02-04 15:47:53 JRebel:
2015-02-04 15:47:53 JRebel:  #############################################################
2015-02-04 15:47:53 JRebel:
2015-02-04 15:47:53 JRebel:  JRebel Legacy Agent 6.1.0-SNAPSHOT (201502032154)
2015-02-04 15:47:53 JRebel:  (c) Copyright ZeroTurnaround AS, Estonia, Tartu.
2015-02-04 15:47:53 JRebel:
2015-02-04 15:47:53 JRebel:  Over the last 6 days JRebel prevented
2015-02-04 15:47:53 JRebel:  at least 14 redeploys/restarts saving you about 0.6 hours.
2015-02-04 15:47:53 JRebel:
... 

  หลังจากนั้นมาแก้ตัว parameters ที่ใส่ให้ jrebel.jar เพื่อเปิดใช้เฉพาะ plugin ที่ต้องการใช้

ของเดิมของผมเป็นแบบนี้ (คือโหลด plugins ทุกตัวที่ default มาให้)
...
export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxPermSize=256m \
-Dapple.awt.UIElement=true -Djava.awt.headless=true \
-javaagent:lib/jrebel.jar \
-javaagent:lib/aspectjweaver.jar \
-Xdebug -Drebel.log=false 
... 

ผมใช้ springframework, log4j 1.2 จึงเปลี่ยนเป็นแบบนี้ 
...
export JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxPermSize=256m \
-Dapple.awt.UIElement=true -Djava.awt.headless=true \
-javaagent:lib/jrebel.jar \
-javaagent:lib/aspectjweaver.jar \
-Xdebug -Drebel.log=false \
-Drebel.fsnotify_intellij_plugin=false \
-Drebel.aspectj_plugin=true -Drebel.log4j_plugin=true \
-Drebel.spring_plugin=true -Drebel.tiles1_struts_plugin=true
... 

เท่านี้ก็กลับมาใช้ JRebel ได้เหมือนเดิมแล้ว ^^ blog เป็นภาษาไทยในใจก็คิดว่าจะมีคนไทยซักกี่คนที่ใช้ JRebel เหมือนผมเนี่ย..ย ใครใช้ก็มาแลกเปลี่ยนประสบการการใช้งานกันได้นะ


ไม่มีความคิดเห็น :