วันศุกร์ที่ 21 มีนาคม พ.ศ. 2551

วิธีการ Stop, Start Websphere 6.1 ผ่าน Command Line

เป็นวิธีการ Stop, Start Websphere Application Server 6.0-6.1 น่ะครับ ทำบน Unix ผ่าน Command Line ถ้าทำบน Windows ผมว่าน่าจะง่ายกว่าน่ะครับ หลัการง่ายๆ ก็ดังนี้

สำหรับ Start Server
  1. เราต้องไป Start Manager ก่อน (ซึ้งถ้าเรา Start เสร็จเราจะได้หน้า Admin Console มาครับ) โดยจะอยู่ที่ .../IBM/Websphere/AppServer/bin ครับ จะชื่อ startManager (ใช้คำสั่ง ./startMAnager.sh)
  2. ต่อไปเราจะมา Start Node ให้เข้าไปที่ Node ที่เราต้องการ โดยจะอยู่ที่ .../IBM/Websphere/AppServer/profiles/[Node]/bin จะชื่อ startNode.sh
  3. พอเสร็จแล้วเราสามารถไป Start Server ได้ที่ หน้า Admin Console ได้เลยครับ หรือถ้าจะใช้ Command ก็สามารถทำได้ที่ เดียวกับ Node เลยครับ จะชื่อ startServer.sh ครับ
สำหรับ Stop Server
  1. ใช้หลักการเดียวกันเลยครับ แต่เปลี่ยนคำสั่งเป็น stopXXX.sh
  2. ดยจะต้องย้อนกลับขึ้นไปแทนโดยเริ่มที่ Server ก่อนแล้วย้อนขึ้นไปเรื่อยๆ น่ะครับ

วันศุกร์ที่ 15 กุมภาพันธ์ พ.ศ. 2551

การหาอักขระ สำหรับขึ้นบรรทัดใหม่

โดยปกติ แล้วระว่าง Windows, Linux จะเป็นคนละตัวกันน่ะครับ
ผมเลยใช้วิธีนี้แทน

System.getProperty("line.separator");

จะได้ข้อมูลว่า System นั้น ตกบรรทัดเป้นอะไรน่ะครับ

วันอังคารที่ 29 มกราคม พ.ศ. 2551

Config Object Cache Instances [On Websphere 6.0-6.1]

ใช้ Cache ของ Websphere น่ะครับ โดยเราจะต้องเอาค่าเข้าไปเก็บ แล้วเรียกขึ้นมาอีกทีนึงน่ะครับ

1. Object cache instances จะอยู่ที่ Resources --> Cache instances
2. เลือก New จะได้หน้าจอแบบนี้



3. แล้วก็ใน Name กับ JNDI Name (เป็นชื้อที่เราใช้เรียกจาก Project น่ัะครับ)
4. จะใช้งานได้แล้ว โดยเราจะต้องทำ Resource Reference ใน Project(Web Projectm EJB Project) ที่เราใช้เรียก โดยเป็น com.ibm.websphere.cache.DistributedMap น่ะครับ
5. ใช้งานแบบ Map เลย Put ค่าลงไปก่อนจะใช้ก็ Get เอา

วันศุกร์ที่ 25 มกราคม พ.ศ. 2551

วิธีการใช้งาน Ethereal เบื้องต้น

Ethereal เป็น โปรแกรมที่ไว้ดักจับข้อมูลใน Network ที่ผ่านเข้าออกจากเครื่องเราน่ะครับ บางทีพอเวลาเราเขียนโปรแกรมที่ต้องติดต่อกับระบบข้างนอก (เช่น การใช้ Web Service, XML Over HTTP) เราส่งข้อมูลไปครบ แต่ทำไมส่งไปฝั่งนู้นไม่ครบ ทำให้บางทีเราต้องมาตรวจสอบ Package ว่าข้อมูลที่ส่งไปจริงๆ ถูกหรือเปล่าน่ะครับ โหลดได้จาก ที่นี่ (ซึ่งเวลาเรา Install ให้เลือก Install WinPCap ด้วยนะครับ)

รูปหน้าตาโปรแกรมครับ



วิธีการใช้งานเบื้องต้น
1. เลือกว่าเราจะจับข้อมูลทางช่องทางไหน โดยดูที่ Capture --> Interfaces...
2. พอกดไปแล้ว มันจะให้เลือก ก็เลือกที่เราต้องการ (ดูง่ายๆ อันที่มีข้อมูลวิ่งน่ะครับ ก็เลือกอันนั้นเอา)
3. กด Capture เลย แล้วก็ Run Programmes ของเรา พอเสร็จก็กด Stop ก็จะได้ข้อมูลแล้วครับ แล้วก็ดูใน Package เอาก็จะรู้แล้วว่าข้อมูลที่ส่งไปถูกหรือไม่

ปล.
1. Filter ง่ายๆ ip.addr = IP ที่เราต้องการ
2. ถ้าจะดูข้อมูลคลิกขวาที่ Package แล้วเลือก Follow TCP Stream ก็จะเห็นข้อมูลที่เราส่งไปครับ

วันพฤหัสบดีที่ 24 มกราคม พ.ศ. 2551

ปัญหาการ Deploy บน Websphere 6.0 - 6.1

ปัญหาส่วนใหญ่ต้องดู SystemOut.log เอาน่ะครับ อันนี้เป็น Guidline คร่าวๆ เท่านั้น

1. ถ้าเคย Deploy แล้วได้ แต่อยู่ดีๆ พอ Deploy ใหม่แล้วไม่ได้ ลอง Export Ear File ใหม่แล้ว Deploy อีกที อาจจเป็นเพราะเวลาเรา Export มามีปัญหาน่ะครับ ลองทำซ้ำดู ก็จะได้

2. ถ้า Deploy สำเร็จ แต่ Start Application ไม่ได้ อันนี้ต้องตรวจสอบดีๆ ว่าเป็นที่อะไรน่ะครับ
  • ลองดูว่า Duplication EJB Name หรือเปล่าครับ ถ้าใช้ ก็เปลี่ยนชื่อไม่ให้ซ้ำกัน
  • Deploy EJB Project หรือยังก่อนที่จะ Export Ear File มันก็จะทำให้มีปัญหาเหมือนกัน
  • เป็นที่ Ear Project หรือเปล่า ลองตรวจดูว่า มี Web Module หรือ Module ไหนหรือเปล่าที่ Doesn't exist ใน Ear Project (เกิดกรณีที่เราเปลี่ยนชื่อ หรือลบมันทิ้งน่ะครับ)
  • ถ้ามีการเปลี่ยนชื่อ Project หรืออะไรต้องทำการ Remove ออกก่อนแล้ว Add ใหม่ ถ้าไม่ทำอาจจะทำให้ Deploy Application ไม่ได้น่ะครับ
3. ปัญหา Application ยาวเกิน 259 ตัวอักษร (เกิดใน Windows ผมไม่แน่ใจว่าบน Unix จะเป็นเปล่านะครับ) ให้เปลี่ยนชื่อ Application Exception จะประมาณ xxx too long น่ะครับ แก้ได้ดังนี้
  • ถ้าสามารถเปลี่ยนชื่อ Application ได้ก็ให้เปลี่ยนให้สั้นลงนะครับ
  • ถ้าเป็นที่ WSDL File ให้ลบทิ้ง (ปกติมันจะ Generate WSDL File มาสองที่ ที่อยู่ในลึกมากๆ หลาย Folder อันนี้ให้ลบทิ้งได้เลยครับ ส่วนที่อยู่ใน web-inf/wsdl ไม่ต้องลบครับ)
  • ถ้าทำตามข้างบนไม่ได้ให้ Create Profile ใหม่แล้วเอา Application ไปไว้ที่ตัวใหม่แทนน่ะครับ ดูวิธี Create ได้ ที่นี่

4. อันนี้สำคัญมาก ถ้าเรา Deploy Ear File ของเิิดิม โดยเปลี่ยนชื่อเป็นตัวใหม่ พยายามแก้ JNDI Name (EJB) ทั้งหมด อย่าให้ซ้ำ เพราะจะทำให้ทุก Application ที่ Deploy อยู่บน Server ใช้งานไม่ได้ ต้อง Unistall แล้ว Deploy ใหม่ทั้งหมด (ดูจาก ใน Directory installedApp จะไม่มี ข้อมูลอยู่เลย) แต่สามารถ Export ข้อมูลออกมาได้ คือ Export แล้ว Uninstall แล้วเอาตัวที่ Export มา Deploy ใหม่น่ะครับ

วันศุกร์ที่ 11 มกราคม พ.ศ. 2551

วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ Class ที่เราไปเรียก On Rad 6.0

ไว้ตรวจสอบเวลาเราเล่น Application แล้วหา Class ไม่เจอน่ะครับ (Class Not found) นะครับ
1. ตรวจสอบดูที่ Ear Project (application.xml file) โดยดูดังนี้
  • ที่ Tab Deployment ตรงส่วนของ Application ให้ตรง WAR classloader policy : เป็น APPLICATION (default จะเป็น MODULE)
  • ถ้าเป็น Error จาก Class จาก Jar File ที่เพิ่มเข้ามาแบบ Add External JARS จะต้องมาเพิ่ม Library ที่ Shared Library ใน Tab Deployment ด้วย โดยจะ Add เป็น Path ของ Jar นั้นได้เลยครับ ดังรูป
  • ถ้า Class เป็นของ Java Application ที่เราทำไว้ ให้ไปดูที่ Tab Module ให้ Add ตรงที่ Project Utility JARs ครับ
  • ถ้า Class เป็นของ Web Project, EJB Project เอามาใช้สามาถ Add ได้ที่ส่วนของ Module ใน Tab Module ครับ
2. ต่อไปตรวจสอบที่ Java JAR Dependencies (โดยคลิกขวาที่ Project แล้วเลือก Properties แล้วจะมี อันนี้อยู่ครับ) ว่ามีการคลิก Project ที่เราต้องการหรือยัง (อะไรไปเรียกอะไร ก็ Config ที่ Project ที่เรียกนั้นครับ)

หมายเหตุ
  • อย่าใช้ชื่อ Class เดียวกัน Package เีดียวกัน แต่อยู่คนละ Project นะครับ เพราะ โปรแกรมจะไม่รู้ว่าดึงตัวไหนไปใช้ ทำให้สับสนได้ครับ

วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ JNDI Name On RAD 6.0

เป็นวิธีการดูเป็น Step น่ะครับ ว่าควรจะตรวจสอบอะไรบ้าง ถ้ามันมีปัญหา Exception JNDI Name Not found. น่ะครับ โดย ทำดังนี้

1. ต้องตรวจสอบก่อนว่าอันไหนไปเรียก JNDI Name ตัวนั้น (Web Project, EJB Project, Project Client)
  • วิธีการตรวจสอบนั้นให้ตรวจสอบจาก SystemOut.log ดูที่เป็น Error จาก Package ของเราแล้วดูลงไปเรื่อยๆ ก็จะรู้ว่ามาจากตัวไหน
2. หลังจากนั้นก็ไปดูที่ Reference ของตัวที่เรียกว่ามีการสร้างไว้หรือยัง โดย

  • ถ้าไปเรียก EJB จะมี Config สองส่วน (อยู่ใน XML File ที่ Tab Reference)ดังรูป



    • จากรูป Name ข้างบนจะเป็น JNDI Name ที่เราใช้เรียกใน Project นั้นครับ ตรวจสอบดูว่าเขียนชื่อถูกหรือเปล่า
    • อันล่างตรง WebSphere Binding ตรงนี้คือ JNDI Name ที่ไปเรียกที่ Websphere ชื่ออะไร คือ JNDI Name ที่อยู่ใน EJB Project นั่นล่ะครับ (โดยปกติเราจะไม่ต้อง Config อันนี้จะดึงค่าจาก JNDI Name ใน EJB Project ให้เลยน่ะครับ ยกเว้นกรณีที่เรามีการแก้ไข JNDI Name ที่ EJB Project มันจะไม่ Auto แก้ให้ต้องมาแก้ไขเองน่ะครับ)

  • ถ้าไปเรียกอย่างอื่น เช่น Datasource ก็มี Config สองส่วนเหมือนกัน ดังรูป


    • ส่วนบนก็ชื่อที่เราใช้เรียกใน Project ของเรา
    • อันล่างตรง WEbsphere Binding ตรงนี้เป็นที่เราไปเรียก JNDI Name ที่ Server ครับ (อันนี้เราต้องเขียนค่าลงไปเองครับ ไม่มี Default ค่าให้)

3. หลังจากตรวจดูจากข้อสอง เสร็จแล้ว
  • ถ้าเป็น Web Project ให้ Save แล้ว Restart Application ถึงจะใช้งานได้ครับ
  • ถ้าเป็น EJB Project ให้ Deploy EJB แล้วก็จะใช้งานได้ครับ
4. หลังจากทำเสร็จแล้วควรจะไม่มีปัญหา JNDI Name Not Found แล้วนะครับ


หมายเหตุ
  • สำหรับ EJB ไปเรียก EJB ด้วยกัน ใน EJB Project เดียวกันก็ต้อง Config Reference เหมือนกันนะครับ ถึงจะเห็น
  • ทุกครั้งที่ Config พวกนี้ ถ้าเป็น EJB ต้อง Deploy ใหม่ทุกครับ สำหรับ Web Project ตั้อง Restart Application ทุกครั้ง