วันจันทร์ที่ 30 เมษายน พ.ศ. 2550

Add Certification บน Websphere 6.0x (Windows)

บน Websphere 6.0x นั้นจะไม่มีเมนู Add บน Websphere Admin Console แต่เราจะต้อง Add บน ikeyman โดยมีขั้นตอนดังนี้
1. หาไฟลล์ ikeyman.bat แล้วทำการรัน ขึ้นมาโดยไฟลล์จะอยู่ที่ directory bin
2. หลังจากรันขึ้นมาแล้ว ให้ เปิดไฟลล์ ที่ชื่อ DummyServerTrustFile.jks และ DummyServerKeyFile.jks โดยขั้นตอนการ add จะเหมือนกันทั้งสองไฟลล์ (จะอยู่ใน Folder xxx/etc)
3. Password : WebAS ซึ่งเป็น default
4. ตรง Key database content ให้เลือกเป็น Signer Cerfiticates
5. แล้วทำการ Add ไฟลล์ cer เข้าไป
6. ให้ทำทั้งสองไฟลล์หลังจากทำเสร็จให้ Restart Server ก็จะใช้งานได้
7. ในกรณีที่ Add แล้วมันยังไม่ได้ให้ใช้วิธีเซ็ตค่าลงบน Application เลย ตามนี้

ปัญหา SSL เวลา Cert หมดอายุ

อาการที่เป็นแบบนี้เพราะว่าเซ็ต Locale เป็น Thai ให้เปลี่ยน Locale ของเครื่องเป็น English แล้วจะหาย (ในกรณีที่ Start Server ไม่ขึ้นด้วยเหมือนกัน)

วันศุกร์ที่ 27 เมษายน พ.ศ. 2550

ปัญหา Scheduler บน Websphere 6.1 ในกรณีที่มีหลาย Server

เป็นปัญหาที่พบเวลาเรา Deploy Application แล้วทำ Scheduler น่ะครับ โดยไปดูได้ที่ Table xxx__SCHED_LMGR
Column LEASEOWNER ให้เป็น Server ที่ถูกต้องถ้าผิดให้ลบแล้ว Commit แล้ว Refresh ดูจนกว่าจะถูก Server ถ้ายังไม่ถูกก็ลบไปเรื่อยๆ

เิ่พิ่มเติม สามารถแก้ได้โดยให้ Scope ของ Sheduler อยู่บน Application Server เลยครับ ก็จะหาย (ได้จากคนอื่นเทสให้ครับ)

วันพฤหัสบดีที่ 19 เมษายน พ.ศ. 2550

วิธีแก้ปัญหาพื้นฐานเวลาทำไมหน้า Web ถึงไม่ขึ้น

1. ตรวจสอบก่อนว่า Application ทำงานหรือยัง

2. ตรวจสอบโดยวิ่งเข้าหน้าเวบผ่านทาง Application Server (ถ้า Default Port จะเป็น 9080) ถ้ายังไม่ได้แสดงว่า Application ยังมีปัญหาในการ Deploy อยู่ (ในบางกรณีเวลา Deploy เสร็จแล้วอาจจะต้องรอข้อมูลให้ Sync กันระหว่าง Application Server หลายตัว เราจะต้องทำการเทสทุกเครื่องที่มีในระบบ เพราะอาจจะเกิดกรณีที่ว่า ข้อมูลของ Application Server ไม่ Sync ขึ้นได้แค่บางเครื่อง

3. ถ้าทำในข้อ 2 สำเร็จแล้วให้ตรวจสอบในส่วนของ Web Server ว่ารันขึ้นหรือยัง ถ้ายังให้ทำการ Start Web Server ซึ่งสามารถทำผ่านหน้า Admin Console ได้เลย

4. หลังจากทำผ่านข้อ 2 แล้วในกรณีที่เป็น Application ใหม่ พึ่ง Install ลง Server ครั้งแรก ให้ทำการ Propogate,Generate Plugin ที่ตรง Web Server ซึ่งพอเสร็จแล้วต้อง Success ทั้งสองอย่าง (คือการทำให้ Web Server กับ Application Server Sync ข้อมูลกัน)

5. ในกรณีที่ไม่ Success อาจจะเกิดจากกรณีที่ระบบเขายังไม่ได้ Grant สิทธิ์ของ Web Sphere Admin ในการเข้าไปเปลี่ยนข้อมูลใน Folder ที่ Config ให้ไปเพิ่มสิทธิ์ในการเข้าถึงบน Unix ก็จะทำงานได้

6. ให้ไปตรวจสอบข้อมูลที่ไฟลล์ plugin-cfg.xml ว่ามีการ Map Context Root ลงไปหรือเปล่า โดยจะมีข้อมูลคล้ายตัวอย่างข้างล่างนี้

Example
<Uri AffinityCookie="JSESSIONID"AffinityURLIdentifier="jsessionid" Name="/mer/MGWWebService/*" />


7. ในกรณีที่ไม่มีข้อมูลนั้น (น่าจะเป็นจากการที่ว่าเรามี Application Server, Web Server แยกกันคนละเครื่อง แล้วมีมากกว่า 1 เครื่อง) ให้ทำดังนี้
1. ให้ไปที่เมนู Environment --> Update global Web server plug-in configuration แล้วทำการกดปุ่ม OK ซึ่งจะทำการ Update Config Context Root ทั้งหมด ถ้าไม่แน่ใจ ลองกด View or download the current Web server plug-in configuration file เพื่อดูว่ามีจริงหรือไม่ แต่โดยปกติมันต้องมีข้อมูลอยู่
2. เมื่อทำเสร็จแล้วให้ไปทำการ Generate Plugin กับ Propagate Plugin อีกทีนึง แล้วทำการตรวจสอบดูว่ามีแล้วหรือไม่ตามข้อ 6
3. ถ้ายังไม่มีให้ใช้วิธีการ Copy ข้อมูลไปเพิ่มในไฟลล์ plugin-cfg.xml (โดยดู Path ว่าอยู่ที่ไหนได้จากตอน propagate Plugin บอกประมาณว่า จาก ที่ไหนไปไหนให้ Copy ไปทับตรงจาก Example Path --> /data/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/ PBITAPPDEV01Cell01/nodes/ihsnode03/servers/webserver1/plugin-cfg.xml)
หมายเหตุ วิธีการเพิ่มข้อมูลเองไม่ควรจะทำเพราะว่า ถ้าเรา Generate Plugin ใหม่ข้อมูลที่เพิ่มจะหายไป ต้องการวิธีแก้ที่ Websphere

8. ตรวจสอบอีกทีว่าหน้าเวบขึ้นได้หรือไม่ (เช็คที่วงแลนเดียวกัน)

9. ในกรณีที่วิ่งจาก Internet หรือ Intranet แล้วยังไม่ได้จากข้อ 6 ต้องตรวจสอบตัว Reverse Proxy, Load Balance, …. ดูว่าได้มีการ Config ผิดหรือไม่ถึงยังไม่สามารถจะไปที่หน้าเวบนั้นได้

วันอังคารที่ 17 เมษายน พ.ศ. 2550

Example Config Network (For Web Server and Application Server)



จากรูปจะดูแยกเป็นสองส่วนคือ Web Zone จะเป็นส่วนที่รับ Request เข้ามาจะมี Web Server และส่วนของ Application Zone เป็นส่วนที่มี Application Server อยู่
1. จากรูป Web Server จะเห็นได้ว่ามี IP ในแลนนั้นจะเป็น 10.221.7.120 แต่ถ้า Web Server จะวิ่งออกไปข้างนอกนั้น ก็จะเป็นอีก IP นึง ซึ่งจากรูป IP 172.20.3.1 จะเป็น IP จาก Internet วิ่งเข้ามา (ซึ่งบางทีจะมีอุปกรณ์บางอย่างกั้นก่อนเข้ามาเช่น Reverse Proxy, Load Balance) ส่วนอีกด้านนึงจะเห็นว่า Web Server จะวิ่งไปติดต่อกับ Application Server นั้นได้จะต้องวิ่งไปด้วย IP 192.168.0.50(IP Intranet) ซึ่งทางฝั่งของ Application Zone นั้นมี Load Balance สามารถวิ่งที่ IP 192.168.0.20(IP Intranet) ได้เลย แล้วตัว Load Balance จะจัดการเองว่าให้วิ่งไปที่เครื่องไหน
2. ถ้าในกรณีของ Websphere นั้นเราจะให้ตัว Websphere จัดการเอง เราเลยไม่สามารถที่จะให้มันวิ่งผ่าน Load Balance ได้ เลยจำเป็นต้องทำ Forwarding จากเครื่อง Aplication Server ออกมาข้างนอก โดยจะเป็น IP 192.168.0.1 กับ IP 192.168.0.2 แทน
Posted by Picasa

วันพฤหัสบดีที่ 12 เมษายน พ.ศ. 2550

วิธีการดูว่าจะขอเปิด Firewall จากฝั่ง Application Server หรือ Web Server

1. ต้องตรวจสอบ IP ของเราก่อนว่าจะวิ่งจากไหนไปไหน โดยเราจะต้องแบ่งประเภทของ IP ที่มีอยู่ที่เครื่องก่อน
· IP ในวงแลนเดียวซึ่งจะสามารถวิ่งอยู่แค่ในส่วนวงแลนเดียวกันเท่านั้น ไม่สามารถที่จะใช้อ้างอิงจากข้างนอก เข้ามาข้างในได้ และจากข้างในไปข้างนอกได้ (ex. 10.221.8.21)
· IP Intranet เป็น IP ที่ใช้สำหรับในองค์กร ซึ่งจะเป็น IP ที่คนที่อยู่ในองค์กรเดียวกันจะวิ่งหากันด้วย IP ตอนจะขอเปิด Firewall จะต้องดูที่ IP นี้เป็นหลัก (ex. 192.20.3.1)
· IP Internet เป็น IP ที่ให้คนทั่วไปจากข้างนอกเข้ามาใช้งานได้

2. ในกรณีที่มี Web Server และ Application Server ให้เช็คว่า ถ้าวิ่งออกจากเราไปหาคนอื่นให้วิ่งจาก Application Server ไปยัง Web Server ของคนอื่น แต่ถ้าคนอื่นวิ่งมาให้เปิดจากฝั่ง Web Server

3. ถ้ามีเป็น Cluster นั้นให้เปิด Firewall ทั้งสองเครื่องที่วิ่งไปเพราะเราจะไม่รู้ว่าวิ่งจากเครื่อง Application Server ไหนกรณีที่มี Load Balance นั้นให้ขอเปิดในส่วนที่วิ่งเข้ามาที่ Load Balance แล้วขอจาก Load Balance มา Web Server ไม่ต้องขอจาก Web Server

วันจันทร์ที่ 9 เมษายน พ.ศ. 2550

วิธีตรวจสอบ Connection WSDL

วิธีตรวจสอบ Connection WSDL
1. ให้เช็คก่อนว่า Firewall เปิดหรือยัง สามารถติดต่อไปถึงเครื่อง Server ได้หรือเปล่า โดย


#telnet [IP Address] [Port]

ถ้าไม่มีการ Time Out ก็แสดงว่าสามารถ ติดต่อถึงเครื่อง Server นั้นได้แล้ว
ถ้า Time Out ให้ขอเปิด Firewall จากเครื่องที่เราเทส ไปยังเครื่อง Server

2. ตรวจสอบว่าต้องวิ่งผ่าน https หรือเปล่า ถ้าวิ่งผ่านให้ทำการ Trust Certificate ซะก่อนโดย ทำที่ Server (ไม่ใช่ที่ Application หรือ ear file เด็ดขาด)


Example Config SSL บน Aplication ซึ่งไม่ควรใช้
System.setProperty("javax.net.ssl.trustStore", trustStoreFile);
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePwd);
System.setProperty("javax.net.ssl.keyStore", keyStoreFile);
System.setProperty("javax.net.ssl.keyStorePassword", keyStorePwd);


3. Test WSDL โดย Test จาก คลิกขวาจากไฟลล์ WSDL แล้วเลือก Web Services à Test with Web Services Explorer


4. หลังจาก Test ผ่านข้อ 3 แล้วให้ทำการ Test โดยการ Generate Stub Call ไปเรียก Web Services (เขียนเรียกจาก jsp) โดยเลือก WSDL ไฟลล์ แล้วคลิกขวาเลือก Web Services à Generate Java bean skeleton แล้วก็ Next จนจบ


Example วิธีการเรียกจากการ Generation เอง (เรียกผ่าน Proxy File)
UMarket_PortType service = new UMarket_PortTypeProxy();
StandardBizRequest request = new StandardBizRequest();
StandardBizResponse response = service.activate(request);


5. ถ้าไม่สามารถเรียก ข้อ 4 ได้ (Exception จะประมาณว่า Exception BeanDeSerializable) อาจจะเป็นเพราะเราไปเรียก Web Service กันคนละ Server ให้ทำการขอทางด้านที่ให้ Web Services มา Generate Sub Call มาเป็น Jar File ให้ แล้วลองเรียก ผ่านอีกทีนึง (อาจจะต้องใช้ axis.jar จากทางนั้นด้วยเพราะบางทีใน Websphere จะเป็น version เก่า)


Example ในการเรียก
PctVoiceFaxServiceSoapBindingStub stub = null;
VoiceFaxServiceServiceLocator locator = new VoiceFaxServiceServiceLocator();
VoiceFaxService faxservice = locator.getPctVoiceFaxService(new java.net.URL(faxURL));
stub =(PctVoiceFaxServiceSoapBindingStub)faxservice;


หมายเหตูในกรณีที่หาเมนูไม่เจอให้เพิ่มเมนูได้ที่
1. Window --> Preferences
2. ไปที Workbence --> Capabilities
3. ให้ไปติ๊กทั้งหมดใน Web Service Developer
4. หลังจากนั้นคลิกขวาแล้วจะมีขึ้นมา