Tuesday, January 03, 2006

Wavelet Enterpricse Management Portal

Wavelet Enterpricse Management Portal
ชื่อ app มีคำว่า portal แต่จริงๆแล้วมันคือ ERP ตัวหนึ่ง
เป็น Web Application
ใช้ database Postgres
แล้วก็ deploy บน jboss

คนเขียนอยู่ไกล้ๆนี่เอง Singaport กับ Malaysia
(ตอนแรกที่ไม่รู้ เห็น ชื่อ author ใน source code แล้วยังรำพึงเลยว่า
ทำไมมี developer เป็นคนจีนเยอะจัง)

Web Framework ที่ wavelet ใช้ เป็น inhouse framework
ก็คือมี properties file ตัวหนึ่งเป็นตัวกำหนดว่า uri ที่เข้ามาต้อง
ไปเรียก Action ตัวไหน

Domain implement ด้วย EJB
ที่น่าสนใจก็คือ ไม่ได้ใช้ Session Bean เลย
แต่ใช้ Java Bean ธรรมดาในการจัดการกับ business logic

เอกสารในการ install อยู่ใน setup.sh
เริ่มจาก download jboss มาก่อน
โดยใช้ version 3.0.7
ที่ใช้ตัวนี้เพราะ file datasource service ของ Wavelet ที่อยู่ใน source code
มันใช้วิธีการ config ของ jboss 3.0.x

postgres ผมใช้ 7.4.1

ทดสอบ deploy มีปัญหาที่ entity bean emp-accounting.jar
เป็นปัญหาประมาณว่า

Document root element is missing.:-1:1

เดาว่าน่าจะเป็นเรื่องเนื้อหาใน file ejb-jar.xml, jboss.xml ก็เลย
สร้าง file ใหม่แล้ว copy & paste เนื้อหาใน file เก่ามาใช้
จากนั้นก็ทดลอง deploy อีกที
ผ่านฉลุย
(ช่างเป็น error message ที่ไม่สื่อความหมายเอาเสียเลย)

ผ่านจากนี้ไปก็ไปเจอปัญหา emp-erm.jar deploy ไม่ผ่าน
ปัญหานี้เกิดจาก descriptor file ของมันเขียนชื่อ bean ผิด
เอาว่าคงมีคนใช้ search & replace เข้าไป scan แล้วแก้เกิน

จากนั้นก็ไปติดปัญหา password ตรงหน้า login
password เขา encrypt ไว้ โดยเก็บในบน table user_index
มี datatype เป็น bytea
ใน script setup เขียน comment ไว้ว่า ใช้ password เป็น "nobody"
แต่ทดลองแล้วก็ไม่ผ่าน
สุดท้ายเลยต้องเขียน program เข้าไป update ใน database เอง
ที่ต้องเขียนโปรแกรม ก็เพราะว่า wavelet เขาใช้ encrypt engine ของเขาเอง

ประเด็นหนึ่งที่เห็นใน source code ของ wavelet ก็คือ
วิธีที่เขาใช้ตรวจสอบว่า password ถูกต้องหรือเปล่า
ถ้าเป็นเราเขียน เราก็คงจะใช้วิธี hash encrypt password ที่ user กรอก
แล้วค่อยเปรียบเทียบกับ password ที่เก็บใน table
แต่ wavelet เขียนว่า ให้ดึง password ที่ encrypt เก็บไว้ใน table
ขึ้นมาทำการ decrypt แล้วค่อยเปรียบเทียบกับ password ที่ user กรอกมา

ผ่านจากหน้า login เข้าไปได้ ก็ไปเจอปัญหาว่า
layout มันรวนเรไปหมด
ตอนแรกก็เอาว่า สงสัยมันเขียนให้ใช้บน IE เป็นหลัก
อุตส่าห์ไปขุดหา IE มาทดลองเล่นดู ก็ยังไม่ได้อยู่ดี

สุดท้ายก็ไปพบว่า jsp comment ที่ใส่ไว้มันมีปัญหา
jsp ใน wavelet เขาใช้ style นี้

<%---------------- Section -------------%>

เปลี่ยนใหม่ให้เป็น

<%-- ------------- Section ---------- --%>

(จริงๆ ก็ไม่ได้แก้หรอก ใช้วิธีลบทิ้งเร็วกว่า)
ปรากฎว่า ทำงานได้
สิ่งมหัศจรรย์เกิดขึ้นอีกแล้ว
เลยไปนั่งทดสอบ jsp กับ jetty 5.x แล้วก็ tomcat 5.0.x
ปรากฎว่าทั้งคู่ ก็สามารถใช้ comment แบบยาวเป็นพรืดได้
ผู้ต้องสงสัยก็เลยไปตกอยู่ที่ jetty ที่ embed มากับ jboss 3.0.7

หน้าตาของ wavelet ดูไม่เลวเลย (หน้าแรก)

Related link from Roti

No comments: