<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6314399940512680345</id><updated>2012-01-22T09:15:28.119+08:00</updated><category term='SFF'/><category term='Problem Application Server'/><category term='Notification'/><category term='Encode UTF-8'/><category term='jaxb'/><category term='C'/><category term='config download file'/><category term='Dom4j'/><category term='Hibernate'/><category term='Encoding Thai'/><category term='maven'/><category term='JAVA LDAP'/><category term='Object Pool'/><category term='odbc'/><category term='Generate SFF File'/><category term='Java Reference'/><category term='Connection Timout'/><category term='RAD 6.0'/><category term='spring batch'/><category term='EJB'/><category term='Application Server'/><category term='ORA-12705'/><category term='spring roo'/><category term='HTTPURLConnection'/><category term='spring'/><category term='Connection WSDL'/><category term='rss'/><category term='SIB'/><category term='Start'/><category term='check alive'/><category term='review'/><category term='newbie'/><category term='jax-ws'/><category term='Websphere 6.1'/><category term='IBM'/><category term='Web Server'/><category term='JMeter'/><category term='seam'/><category term='WID 6.02'/><category term='weblogic 10.3'/><category term='Store Procedure'/><category term='SMPP Protocol'/><category term='Share Library'/><category term='XML'/><category term='TImeout'/><category term='Line'/><category term='Java Load Test'/><category term='crystal report'/><category term='Convert Clob to String'/><category term='Set Connection Time Out'/><category term='Web  Service'/><category term='interview'/><category term='Deploy Application'/><category term='AspectJ'/><category term='Yashima'/><category term='weblogic 11g'/><category term='Datasource'/><category term='Eclipse'/><category term='Socket'/><category term='Cursor'/><category term='google'/><category term='Unix'/><category term='AOP'/><category term='google analyics'/><category term='By Pass IE 7.0'/><category term='Trust Certification'/><category term='oracle bug 3807408'/><category term='client'/><category term='Cache'/><category term='Deploy EJB'/><category term='64bit'/><category term='Entity Bean'/><category term='Problem AJAX'/><category term='weblogic 8.1'/><category term='tomcat'/><category term='ethereal'/><category term='Firewall'/><category term='RPC'/><category term='http'/><category term='Oracle'/><category term='SOA'/><category term='Config Certification'/><category term='TOAD Thai Language'/><category term='C++'/><category term='Problem Web Server'/><category term='WSDL'/><category term='Resource Bundle Editor'/><category term='google notebook'/><category term='Websphere 6.0x'/><category term='Oracle DB Broken Pipe'/><category term='Web Application'/><category term='JNDI Name Not Found'/><category term='SSL'/><category term='Problem Java'/><category term='Scheduler'/><category term='SNMP4J'/><category term='Network'/><category term='feed'/><category term='HTTP Proxy'/><category term='xjc'/><category term='By pass WMP11'/><category term='Create Profile'/><category term='zk'/><category term='tutorial'/><category term='Java Call Web Service'/><category term='Install JRE'/><category term='Problem RAD 6.0'/><category term='Eclipse Plugin'/><category term='UDDI'/><category term='Java'/><category term='java.sql.Clob'/><category term='Web Service'/><category term='log4j'/><category term='Portlet'/><category term='Java SNMP'/><category term='Convert PDF to SFF'/><category term='Install'/><category term='Read Timeout'/><category term='google reader'/><category term='Update'/><category term='Tivoli Viewer'/><category term='article'/><category term='Stop'/><category term='Java Proxy'/><category term='web.xml'/><category term='opml'/><category term='SQA'/><category term='SMS Thai Language'/><category term='reader'/><category term='Java IOC'/><title type='text'>Yashima-Faq (Thai Language)</title><subtitle type='html'>Java Programmer
[Websphere 6.0-6.1]</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default?start-index=101&amp;max-results=100'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-9009733166782352171</id><published>2011-09-29T16:16:00.001+08:00</published><updated>2011-09-29T16:45:51.955+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate config auto load sql script</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; โดยปกติ Hibernate สามารถจะโหลด sql script เข้าไปได้ ถ้าเราสร้างไฟล์ชื่อ import.sql น่ะครับ แล้วกำหนด hibernate properties&lt;br /&gt;&lt;b&gt;hibernate.hbm2ddl.auto&lt;/b&gt; ให้มีค่า &lt;span style="color: red;"&gt;create &lt;/span&gt;หรือ &lt;span style="color: red;"&gt;create-drop&lt;/span&gt; แล้ว Hibernate จะโหลดไฟล์นี้ขึ้นมาให้อัตโนมัติ (ไฟล์จะไปวางไว้ที่ classpath เช่น src/main/resources)&lt;br /&gt;แต่เราจะไม่เห็น log ว่าโหลด sql script ทำสำเร็จหรือไม่สำเร็จโดย&lt;br /&gt;1. ต้องไปเพิ่ม Log4j ของ package&lt;b&gt; org.hibernate.tool.hbm2ddl &lt;/b&gt;&lt;br /&gt;2. Hibernate จะใช้ slf4j มาเพราะฉะนั้นเราต้องเอา Jar ของ slf4j มาด้วย ไม่อย่างนั้นพอเวลารันไปก็ไม่เห็นอยู่ดีครับ เพิ่มใน pom.xml เข้าไปก็จะใช้งานได้แล้วครับ&lt;br /&gt;&lt;br /&gt;&lt;div style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(255, 255, 153) none repeat scroll 0% 50%; border: 1pt solid blue; padding: 1pt 4pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groupid&amp;gt;org.slf4j&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;artifactid&amp;gt;slf4j-log4j12&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;version&amp;gt;1.6.2&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/dependency&amp;gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ปล. ผมใช้ hibernate 3.6.3 (ต่ำกว่านี้น่าจะใช้ได้ตั้งแต่ 3.x) จะสามารถกำหนด sql script ได้ และสามารถกำหนัดได้หลายๆ ไฟล์ โดยใช้ , ต่อกัน ซึ่งจะใช้ hibernate properties อันนี้ครับ&lt;br /&gt;&lt;b&gt;hibernate.hbm2ddl.import_files&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-9009733166782352171?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/9009733166782352171/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=9009733166782352171' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/9009733166782352171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/9009733166782352171'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2011/09/hibernate-config-auto-load-sql-script.html' title='Hibernate config auto load sql script'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2475336885675570349</id><published>2011-09-15T16:51:00.003+08:00</published><updated>2011-09-15T16:52:16.205+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><title type='text'>การแก้ไข error zk-spring duplicate class definition: org/zkoss/spring/beans/zkcomponents/ZKComponentBeanMethods</title><content type='html'>ถ้าลองทำตามตัวอย่าง จากที่ ZK มาให้จากลิงค์ &lt;a href="http://books.zkoss.org/wiki/ZK_Spring_Essentials/Working_with_ZK_Spring/Working_with_ZK_Spring_Core/Inject_ZK_Components_in_Spring_Beans"&gt;http://books.zkoss.org/wiki/ZK_Spring_Essentials/Working_with_ZK_Spring/Working_with_ZK_Spring_Core/Inject_ZK_Components_in_Spring_Beans&lt;/a&gt;&lt;br /&gt;นี้ แล้วอาจจะเกิด exception ตามนี้ครับ&lt;br /&gt;Caused by: java.lang.LinkageError: duplicate class definition: org/zkoss/spring/beans/zkcomponents/ZKComponentBeanMethods&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.ClassLoader.defineClass1(Native Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.ClassLoader.defineClass(ClassLoader.java:621)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at java.lang.reflect.Method.invoke(Method.java:592)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at javassist.ClassPool.toClass2(ClassPool.java:1098)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at javassist.ClassPool.toClass(ClassPool.java:1079)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... 44 more&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ซึ่งมาจาก เรา เรียงลำดับการโหลดผิดใน&lt;b&gt; web.xml&lt;/b&gt; โดยจะต้องเอา &lt;b style="color: red;"&gt;org.zkoss.spring.web.context.CoreContextListener&lt;/b&gt; ขึ้นก่อน &lt;b style="color: red;"&gt;org.springframework.web.context.ContextLoaderListener&lt;/b&gt; จะทำให้แก้ปัญหานี้ได้ครับ&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2475336885675570349?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2475336885675570349/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2475336885675570349' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2475336885675570349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2475336885675570349'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2011/09/error-zk-spring-duplicate-class.html' title='การแก้ไข error zk-spring duplicate class definition: org/zkoss/spring/beans/zkcomponents/ZKComponentBeanMethods'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1793739797521740472</id><published>2011-09-05T14:46:00.003+08:00</published><updated>2011-09-05T14:51:33.204+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='64bit'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle bug 3807408'/><title type='text'>ลง Oracle 32bit บน windows 64bit แล้วมีปัญหา ORA-12154: TNS:could not resolve the connect identifier specified</title><content type='html'>เป็นปัญหาเวลาเราลงโปรแกรม มันจะไปอยู่ที่ Program Files (x64)  ครับ ต้อนจะใช้งานโปรแกรม มันจะไปหามั่วๆ เลยต้องรันผ่าน command line หรือ fixed bug ของ oracle 10g (bug id 3807408) ครับ แต่แก้ง่ายกว่านั้น รันโปรแกรมผ่าน command line เลย โดยให้ cd PROGRA~2 แทน แล้วรันโปรแกรม ก็ใช้งานได้แล้วครับ&lt;br /&gt;&lt;br /&gt;ปล. เวลา config odbc ศำหรับ 32bit จะต้องไปรันโปรแกรม C:\Windows\SysWOW64\odbcad32.exe (ตัวนี้เป็น odbc 32bit รันปกติจะเป็นของ 64bit ครับ) แล้วก็จะใช้งานได้ครับ&lt;br /&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/dataaccesstechnologies/archive/2010/01/26/connectivity-issue-with-oracle-in-x64-environment-ora-12154-tns-could-not-resolve-the-connect-identifier-specified.aspx"&gt;http://blogs.msdn.com/b/dataaccesstechnologies/archive/2010/01/26/connectivity-issue-with-oracle-in-x64-environment-ora-12154-tns-could-not-resolve-the-connect-identifier-specified.aspx&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1793739797521740472?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1793739797521740472/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1793739797521740472' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1793739797521740472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1793739797521740472'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2011/09/oracle-32bit-windows-64bit-ora-12154.html' title='ลง Oracle 32bit บน windows 64bit แล้วมีปัญหา ORA-12154: TNS:could not resolve the connect identifier specified'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6304500206471383101</id><published>2011-05-25T02:15:00.005+08:00</published><updated>2011-05-26T16:08:02.826+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='spring roo'/><title type='text'>Basic Spring Roo</title><content type='html'>มาเขียน Application กับ Spring Roo กัน&lt;br /&gt;เรามาเริ่มเข้าใจกันก่อนว่า &lt;a href="http://www.springsource.org/roo/why"&gt;Spring Roo&lt;/a&gt; คืออะไรครับ&lt;br /&gt;หยิบประโยคมาให้อ่านเลย&lt;br /&gt;&lt;br /&gt;"Spring Roo is a next-generation rapid application development tool for Java developers."&lt;br /&gt;&lt;br /&gt;ซึ่ง Spring Roo จะคล้ายๆ กับ Grails ตรงที่ว่าเราสามารถสร้าง Project ที่พร้อมใช้งาน CRUD ได้เลยในเวลาไม่นาน เพราะทุกอย่างจะ Mapping มาให้ใน Code เลย เราเพียงแค่ใช้ Command สร้างมันเท่านั้น&lt;br /&gt;&lt;br /&gt;ทำให้ใช้งานกันได้ก่อนครับ&lt;br /&gt;1. Download Spring Roo จาก &lt;a href="http://www.springsource.com/download/community"&gt;http://www.springsource.com/download/community&lt;/a&gt;&lt;br /&gt;2. Spring Roo ใช้ JDK6, Maven ให้โหลดมาใช้งาน และ Config Classpath, Path สำหรับ JDK, Maven ด้วยครับ (ควรจะมีพื้นฐานการใช้งาน maven)&lt;br /&gt;3. Config Path โดยไปที่ roo/bin ครับ จะสามารถรันขึ้นมาใช้งานได้ จะได้หน้าตาแบบนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 74px;" src="http://1.bp.blogspot.com/-3Arw5WFhqkU/Tdv5I-8kInI/AAAAAAAAEB4/B9NkKGyFa9E/s320/Screen%2Bshot%2B2011-05-25%2Bat%2B1.29.05%2BAM.png" alt="" id="BLOGGER_PHOTO_ID_5610351693551379058" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ต่อไปเรามาสร้าง Project โดยใช้ Roo กัน&lt;br /&gt;1. สั่ง Roo เลย จะเข้าหน้าสำหรับ command line ซึ่ง Roo เวอร์ชั่นใหม่ (ตอนเขียนบล็อกนี้ใช้ 1.1.3) เราสามารถใช้ hint สำหรับบอกเราว่าลืมสร้างอะไรต้องทำอะไรก่อนบ้าง และมีการใช้งาน tab ในกรณีที่เราลืมคำสั่ง tab ไปจะขึ้นชื่อให้ น่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ElCidm0IS8k/Tdv9M1VlbwI/AAAAAAAAECA/RvhrRftxKmM/s1600/Screen%2Bshot%2B2011-05-25%2Bat%2B1.46.11%2BAM.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 142px;" src="http://2.bp.blogspot.com/-ElCidm0IS8k/Tdv9M1VlbwI/AAAAAAAAECA/RvhrRftxKmM/s320/Screen%2Bshot%2B2011-05-25%2Bat%2B1.46.11%2BAM.png" alt="" id="BLOGGER_PHOTO_ID_5610356157737955074" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;หน้าตัวอย่าง hint&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;2. ถ้าดูจาก hint จะเห็ฯว่าเรายังไม่ได้สร้าง Project ขึ้น จะเห็นว่า ต้อง พิมพ์ project --topLevelPackage ชื่อ package พอทำเสร็จแล้ว roo จะสร้างไฟล์สำหรับเป็น Project ขึ้นมาซึ่งจะใช้ maven เป็นหลักน่ะครับ (ควรจะมีความรู้ maven บ้าง)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;3.  ต่อไปมาสร้างส่วนติดต่อฐานข้อมูล (สามารถ hint ดูได้จะบอกว่าให้สร้าง persistence น่ะครับ) จะเห็นว่า จะมีให้เลือกใช้ technology อะไร แล้วก็เลือกว่าจะใช้ฐานข้อมูลอะไร พอเลือกเสร็จ roo จะทำการเพิ่ม config ลงในส่วนของ maven (pom.xml) แล้วพวก persistence file&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. ต่อไปเรามาสร้าง Entity ขึ้นมา หรือจะสร้างบน IDE ก็ได้ (ลอง hint ดูได้จะมีขึ้นคำอธิบายเลยครับ ง่ายดีไหม) พอเลือกสร้าง (entity --class className) ตัวอย่าง entity --class ~.domain.Test&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;5. พอสร้างเสร็จแล้วเราก็มาสร้าง field ของ domain นั้นขึ้นมา โดยพิมพ์ field แล้วลอง tab ดูครับ ว่าอยา่ได้ ตามตัวอย่างผมสร้าง field firstName เป็น String Type&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;6. พอลองแล้ว มาสร้าง controller ต่อกันครับ โดย controller --class ~.web สร้างแบบนี้จะได้ CRUD (Create-Read-Update-Delete) ให้เลยน่ะครับ ที่ทำการ map กับ domain แล้ว&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeYAAABJCAIAAABnzBIXAAANX0lEQVR4nO2ZUZrjugqEvfSzNC/tPk1ft4CfQpbipEM9zCcjVFVgSUlnjqPRaDQaH4P//vv/4GfM+WLmtJ875D/2dvt8G3x6lecFSvwNEfks+ed6X9+Kp/o/iK418Ck7CvFz4vVz/85X9sDw6feZhqeqXH6W9Pj74MfhYDWKi2ylqX145HNiGGyS+GRUv5C++T34fVf28UShO77+7FbZgbXO+8oevl/3lX0D0Q8OaVDJF3l0n9E44h+SN/tcJWsTUpwXpPHzN6K4e8xgSeRKibMfoHKZRf40Xq1orl6lriru+LkTX4KB9vqo+Nlh6W3A9yCM3WvJ5kfBia/M7u0JPMPdaQ3fGWc2b8pGnBHsnp4b20cbv54K4BHZdD/KaZyoF9ZaRY4DfzXfXW7VOa774T7o41WI2gW6uy29DRZe2fyFdNWV7QZLX7RTeyuu7EH2Dr0iG+3RiSPHVMPJmb4aXNErWBdQsmGlq85tUDGQ5t9EymkTlvRhFa5v/DD7LfW51dvTWHVll+5EJZ+tclChFf3c+JYdBUv0Ym+Uc6WMRaqUv8oGZ2zu+E0U9co+7L5fUs6qn1I37uOH9uffYcBONrl6AtFX0Ynx1ivb/apeugur+W95ZYv39bHnhxE41akur2JyRTfCjj4oFVX7kObfxCo/E32bdjuQ/EQm3teOlj4EuAqjm5fvQTcfeMQrPtKF6/BmvlKvcIOuktXUfuG8II3z/o7y4fCzrpXjuKK7pA9DscNAJ7nTh2PPFbPKz0Qrpq3a4BFczW4womo0Go1Go9FoNBqNRqPRaLw13u03Hd0P/FZ1/2e16Ccw9zH1wwsVXVtXFAc2yGee3T5BIhISdV+G1ys2vhqbNtwcZ/XKgFOtjIF/uA6GKctgg3zjcF1pmUqNbCkdR24X+gSU+lnyvxxiRY3GGuzYcNOcykK+I9yjG+UA/wDWhYh+VYlXUrRE8RlNKX1b7pNR6qe1pAs1Gp+K65FwjyWcoih5gic9ZpDjHuPq0bX+LU9UQsSj2HB75Y45B3wCZzpe7pNR6qeiC1RD8jAViTKPjTNVozEDd9dGZ8NdCGlwxlJ+lyqScI9cyml9DuUzJ5xPa6mkG9Wl1KvkQ5wrXeKTl1hdhUr0H/UHxopESuK6ajRmcN2Rdpva/crxiHzIn97KcHjuHI+oFuiDYia1cc2HEqI+Kz4jD+wNGnLHJ6PUz0g3pYJMO7b1umxMwgYajRzpTqru74U8VcPulOINfLo86bl18/XSRM9pvRM8bGyhT0apn1X/uoTCD02YI2w0COlOmtiC7pFetZUV3TsS1VrESKk0Xst1if1h85yzxKcuF5GXOKv90fl1Y+dvsOFGY8SwdWAzRVPXYLQ7b/Kwc1CE06KQ28cqOT+ytNUa4MatUMRjRUV7C32mfRiSo8dp/9yKNDkqza6NCmS3jUbjF+x5e81Bekq3kWLri1Cu8kaj0WhIeMHHZ39CNxqNRqPxHXi3D3zdj/tthX9q0L/guLTRY+qHFyq6tq4oDmyQzzy7fYJEJCTqvgyvVwQb7+DkDqCKp97s23V1k6E5TsXMNQdOtTIG/uE6GKYsgw2Ct7SutEylRraUjiO3C30CSv0s+V8OsSJY/iZOHsf13dlCnqru7bq6w9A0p7KQ7wj36EY5wD+AdSECS6CuVA5yqv1ReHb4ZJT6aS3pQo9joc9PKTnCe/p/T1fH4X27tFPRKYqSJ3jS7kCOe4yrHbf+LU9UQsSj2HB75Y45B3wCZzpe7pNR6qeiC1RD8jAViTKPjQOV6zOyF+lG0qdBRMh1ARQ/bBL6oPDD2oh8WAgl6314ALaMQ9hbNp5WroxTn5HEMFvt+LXww/Qk4owirqWSblSXUq+SD3GudIlPXmJ1FSrRf9QfGCsSKUnqimmr/q8DhYfHA6Z5Uv7DQCmWwZ7tVIn8Gbhvwn1PQz50M0qG11Zy60amOW2+0gfFTGrjmg8lRH1WfEYe2Bs05I5PRqmfkW5KBZl2bOt12ZgEDIh9Pg1YmnlEb4C5ZnLJitCcZ2iabUuV/EVIK6++koU8VcPuVGlbQD775Mj5D2Jpoue03gkeNrbQJ6PUz6p/XULhhyZUCd2codVgJlqe8pSaCaKpGdZa0mfFrcsTtbfakO1IK7/T+upapTviK5+WqNYiRkql8VquS+wPm+ecJT51uYi8xFntj86vGzt/I2VLPSvS14Gbs6qxN8epnJ2FfkIw8mCnFFcvxVBVVDxMXYNu96HFIg87B8VoViS3j1VyfmRpqzXAjVuhiMeKivYW+kz7MCRHj9P+uRVpclSaXRsVKPqMak8b4mrxY1pyZNjNZ5/uOPUDCe6SKGdoF9irdqOxC/Z9vOatPKXbSLH1Rdi7YJPQl6D72Wh8NV7w8dmf0GvR/Ww0Go3Gu+LdPqB0P+6nK//UoH8gu7TRY+qHFyq6tq4oDmyQzzy7fYJEJCTqrsIOzkhiq0rjj2DTRpnjrF4ZcKqVMfAP18EwZRlskG8cristU6mRLaXjyO1Cn4BSP0v+JyB6/giVxsdjx0aZ5lQW8h3hHt0oB/gHsC5EYAnUlcpBTrU/Cs8On4xSP60lXUjBQqrHVRp/B9cj4R5LOEVR8gRPumshxz3G1ZNg/VueqISIR7Hh9sodcw74BM50vNwno9RPRVf3z9Kp+Yj/NEhLbjQS2O11aOcNjoEbVMapz0himK2ehGvhh+lJxBlFXEsl3agupV4lH+Jc6RKfvMTqKlSif1vOiX2LCC2Y007pzI3GL1w3/TBwjwTHI/Ihv3oeQIWPyhyt0gfFTGrjmg8lRH1WfEYe2Bs05I5PRqmfkW7Jv9i3kn+xbyXmxrcj3Y7RToKFq3iqht0pxRv4dHmU82bz9dJEz2m9EzxsbKFPRqmfJf9X81DLEv9R09ICG40Q6XaMEmChewwmeKqGl0hUaxEjpdJ4Ldcl9ofNc84Sn7pcRF7iLPVK1zr/wdWKRJUCG40Rw247L4gy3U3mbkHO13nYOShGsyK5fayS8yNLW60BbtwKRTxWVLS30GfahyE5elzlP9Xl7ok+3bSJFjUaXwd7Tl5zWp7SbTQajUaj0Wg0Go1Go3HFu/1Jrvtxf0/gnxr0nyDgN0f7mPrhhWAgXX6N8Ozj0Jv/hajukzud7FfwF7DpLe7bUnBVRVN8u7n8p/c/TnD1pJdmqc/uWrFYyBfVN0HswG6f6dvfpBIxT+yT0l5asrDxRtjxFrduqfSqGsbVI3F6YF2IwJKJGleNH4FoYLdP4F8l7fJE5NX9KeY0/j6i6+n4fYu5S6LkCZ47+/U6FdWSwvq3PFEJEU/VRqR1Zwweoua7cbc5h2m4FRL5I5/QzJL/lJ9LTvlTHlfXfVR0LaELvS5rgPMbT+LnZVxfDLxCuxDSIh6F36WKJIbZ6g67Fn6YnkScUcS1pHtYOFYikUk3h9uSSld9HuZd6Aaq/GntzB+1kZ0M5Yj8oKWol+pKeRqvhnsSTgObr2zZiGfh/rPmq5w2X+mDYia1wT3R+8Y+2aqbGeme2OpUZdrnoKv3ZK4P4JP7ZuPubNRPUZe1FOmBH8gjP42XIn39yr5UtvIET9WwO6V4A58ujyXhiLLLI/5VY3ZrgykntyVtUdoQccnCPihtSUkmllxbmnrW0/SFd8aNVyN9ExOvMN2Cd7aContHolqLGCnplvosNiGSq+peF+pWI/O6zyhtom/p8umeAM8qXWWq2syIRBRtvAjDW3HfE09dg8rWmeBh56Co7EIgt49Vcn6s1hWRcIRFz+zVX4NuH1y5qAQ7Fem6PiE59a/w25Lv8Jd0fzKhb0MwtWrzgT+agqLS6hqNxTgD/FXdF+DPFPKXAFd2o9H4Xvyxj5+/hH41jUaj0Wi8HKUP3t0f1Dq/+62Bf2rQv2i4tNFj6ocXKrq2rigObJDPPLt9gkQkJOquwg7OSGKrSuMvoLpL9Py5zVe9MuBUK2PgH66DYcoy2CB4S+tKy1RqZEvpOHK70Ceg1M+S/wmInj9CpfHZqO6S6fO2kJ/vCPfoRjnAP4B1IQJLoK5UDnKq/VF4dvhklPppLelCChZSPa7S+GzAWbXHkuNRcpoP/KlnvRzmBDMuT1RCxKPYcHvljjkHfAJnOl7uk1Hqp6Kr+2fp1HzEfxqkJTcaI5Tjp5w34GFykd+liiSG2epJuBZ+yH2IIq6lkm5Ul1Kvkg9xrnSJT15idRUq0b8t58S+RYQWzGmndObGt0PZmulWtkfF3XynAYhOmBc9V2kHTrdexUxq45oPJUR9VnxGHtgbNOSOT0apn5Fuyb/Yt5J/sW8l5sZXQ9macDaifexuvmhHVs+DqOv6VyTgpIFPjpz/IJYmek7rneBhYwt9Mkr9LPm/modalviPmpYW2Gj4gCPnbmVlfGetsmsV3TsS1VrESKk0Xst1if1h85yzxKcuF5GXOEu90rXOf3C1IlGlwEZjRLRp7C68RuwudLcgbGWIu64i56wYzYrk9rFKzo8sbbUGuHErFPFYUdHeQp9pH4bk6HGV/1SXuyf6dNMmWtRoHMeXfc7bc/Ka8p/SbTQafwp9fTQajUaj0Wg0GnfxPxD0J+ebhrtUAAAAAElFTkSuQmCC" alt="" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;7. พอสร้างเสร็จทำงานได้แล้ว ถ้าเราอยาก run test ไว้ด้วยก็มี perform test แล้วระบบจะรัน (จะมี load jar สำหรับ test มา)&lt;br /&gt;8. ถ้าเราอยากไปใช้งานบน eclipse สามารถรัน perform eclipse ได้เลยครับ Root ๗ะสร้าง project ให้สามารถใช้ได้บน eclipse (โดยการ Import project ก็ใช้งานได้เลย) พอกด enter เดินไปกินข้าวได้เลยครับ นานๆ&lt;br /&gt;9. พิมพ์ exit ออกมษจาก Roo ได้เลยครับ&lt;br /&gt;10. รันเทสได้จาก mvn tomcat:run ครับ (รัน post 8080 ถ้าใช้อยู๋จะรันไม่ขึ้นครับ) เราจะได้หน้าตาแบบนี้มาครับ&lt;br /&gt;&lt;br /&gt;&lt;img src="data:image/png;base64,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" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6304500206471383101?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6304500206471383101/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6304500206471383101' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6304500206471383101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6304500206471383101'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2011/05/basic-spring-roo.html' title='Basic Spring Roo'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3Arw5WFhqkU/Tdv5I-8kInI/AAAAAAAAEB4/B9NkKGyFa9E/s72-c/Screen%2Bshot%2B2011-05-25%2Bat%2B1.29.05%2BAM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2814051387755817180</id><published>2010-07-12T10:52:00.003+08:00</published><updated>2010-07-12T11:57:36.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax-ws'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='client'/><title type='text'>การสร้าง  Basic jax-ws client</title><content type='html'>ตอนที่แล้ว เขียนวิธีการสร้าง jax-ws แล้ว คราวนี้เรามาดูวิธีการเรียกกันครับ ผมทำบน maven เหมือนเคยครับ โดยทำดังนี้ครับ&lt;br /&gt;1. Config Maven เพื่อไปอ่าน wsdl file จาก url มาแล้วทำการ generate stub ไว้สำหรับเรียก Web Service&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;plugin&gt;&lt;br /&gt;        &amp;lt;groupId&gt;org.codehaus.mojo&amp;lt;/groupId&gt;&lt;br /&gt;          &amp;lt;artifactId&gt;jaxws-maven-plugin&amp;lt;/artifactId&gt;&lt;br /&gt;          &amp;lt;executions&gt;&lt;br /&gt;            &amp;lt;execution&gt;&lt;br /&gt;              &amp;lt;goals&gt;&lt;br /&gt;                &amp;lt;goal&gt;wsimport&amp;lt;/goal&gt;&lt;br /&gt;              &amp;lt;/goals&gt;&lt;br /&gt;              &amp;lt;configuration&gt;&lt;br /&gt;                &amp;lt;wsdlUrls&gt;&lt;br /&gt;                  &amp;lt;wsdlUrl&gt;&lt;br /&gt;                    http://localhost:8080/webservice-sample/helloService?wsdl &lt;-- บอกว่าจะไปเอา wsdl file จากที่ไหนมาครับ                    &amp;lt;/wsdlUrl&gt;&lt;br /&gt;                &amp;lt;/wsdlUrls&gt;&lt;br /&gt;                &amp;lt;packageName&gt;tutorial.sample.jaxws.helloclient&amp;lt;/packageName&gt; &lt;-- จำสร้าง stub ไว้ที่ package ไหน                &amp;lt;/configuration&gt;&lt;br /&gt;            &amp;lt;/execution&gt;&lt;br /&gt;          &amp;lt;/executions&gt;&lt;br /&gt;   &amp;lt;/plugin&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2. หลังจากนั้นไปรันที่ command line mvn:compile maven ก็จะทำการสร้าง stub ของ Web Service นั้นขึ้นมาให้ครับ แล้วสามารถนำไปใช้งานได้เลย (&lt;span style="color: rgb(255, 0, 0);"&gt;*&lt;/span&gt;พอทำเสร็จแล้ว เอาส่วนที่เป็น Config wsdlurl ออกน่ะครับ จะได้ไม่ต้องทำการไป generate ทุกครั้ง)&lt;br /&gt;3. มาดูส่วนที่เป็น Java Class กัน&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;HelloService service = new HelloService();&lt;br /&gt;  Hello port = service.getHelloPort();&lt;br /&gt;  System.out.println(port.sayHello("Duke"));&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. ตัวอย่างที่กล่าวมาเป็นวิธีการเรียกแบบ Sync Mode ครับ ยังมีวิธีการเรียกแบบ Async อีกสองแบบ จะพูดถึงในครั้งต่อไปครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2814051387755817180?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2814051387755817180/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2814051387755817180' title='2 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2814051387755817180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2814051387755817180'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/07/basic-jax-ws-client.html' title='การสร้าง  Basic jax-ws client'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7496060720814610310</id><published>2010-07-10T12:58:00.004+08:00</published><updated>2010-07-10T13:26:00.731+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jax-ws'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>การสร้าง jax-ws บน Tomcat</title><content type='html'>ผมเขียนโดยใช้ maven ในการสร้าง Project น่ะครับ และทำให้รันบน Tomcat ถ้าบน Application Server ใช้ Config น้อยกว่านี้น่ะครับ&lt;br /&gt;1. เพิ่ม Config ใน Maven เข้ามาเพื่อ Load Library&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;dependency&gt;&lt;br /&gt;   &amp;lt;groupid&gt;com.sun.xml.ws&amp;lt;/groupid&gt;&lt;br /&gt;   &amp;lt;artifactid&gt;jaxws-rt&amp;lt;/artifactid&gt;&lt;br /&gt;   &amp;lt;version&gt;2.2.1&amp;lt;/version&gt;&lt;br /&gt; &amp;lt;/dependency&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2. Config Maven ให้ใช้งาน Tomcat ได้ ไม่สอนนะครับ เพราะว่า copy มาใช้งานได้จากเวบอยู่แล้วไม่ยากเท่าไรน่ะครับ&lt;br /&gt;3. ต่อไปมาดูส่วนของ Class ปกติการเขียน jax-ws เราจะใช้ Java Class มาใช้โดยการเพิ่ม annotation เพื่อบอกมันว่าจะใช้งานเป็น Web Service ได้เลยน่ะครับ แต่รันบน Tomcat เราจะต้องมี Config เพิ่มในส่วนของ web.xml&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;@WebService &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- จะเห็นว่าแค่บอกว่าจะใช้ Web Service ก็จะสามารถทำงานเป็น Web Service ได้เลยน่ะครับ&lt;/span&gt;&lt;br /&gt;public class Hello {&lt;br /&gt;&lt;br /&gt;public String sayHello(String param) { &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- เป็น Method ที่จะไว้เรียกจาก Client ได้ที่ jax-ws จะ auto generate ให้เป็น Method ใน jax-ws ให้เลยน่ะครับ&lt;/span&gt;&lt;br /&gt; System.out.println("..... sayHello(String param[" + param + "])");&lt;br /&gt;&lt;br /&gt; return "Hello " + param;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;4. ต่อไปมาดูส่วนที่ต้อง Config เพิ่มเติมในส่วน web.xml&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;listener&gt;&lt;br /&gt; &amp;lt;listener-class&gt;&lt;br /&gt;  com.sun.xml.ws.transport.http.servlet.WSServletContextListener&lt;br /&gt; &amp;lt;/listener-class&gt;&lt;br /&gt;&amp;lt;/listener&gt;&lt;br /&gt;&amp;lt;servlet&gt;&lt;br /&gt; &amp;lt;description&gt;Example Web Service&amp;lt;/description&gt;&lt;br /&gt; &amp;lt;display-name&gt;examplews&amp;lt;/display-name&gt;&lt;br /&gt; &amp;lt;servlet-name&gt;example&amp;lt;/servlet-name&gt;&lt;br /&gt; &amp;lt;servlet-class&gt;com.sun.xml.ws.transport.http.servlet.WSServlet&amp;lt;/servlet-class&gt;&lt;br /&gt; &amp;lt;load-on-startup&gt;1&amp;lt;/load-on-startup&gt;&lt;br /&gt;&amp;lt;/servlet&gt;&lt;br /&gt;&amp;lt;servlet-mapping&gt;&lt;br /&gt; &amp;lt;servlet-name&gt;example&amp;lt;/servlet-name&gt;&lt;br /&gt; &amp;lt;url-pattern&gt;/*&amp;lt;/url-pattern&gt;&lt;br /&gt;&amp;lt;/servlet-mapping&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;5. หลังจาก Config เสร็จแล้วจะต้องไปสร้าง sun-jaxws.xml เพื่อ Config ว่า Class ไหนบ้างเป็น Web Service แล้วมี Path เป็นอะไรน่ะครับ&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"&lt;br /&gt;version="2.0"&gt;&lt;br /&gt;&amp;lt;endpoint name="hello" implementation="tutorial.jaxws.webservice.sample.Hello" &lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- บอกว่าจะให้ Class นั้นเป็น Web Service&lt;/span&gt;   url-pattern="/helloService" /&gt;&lt;br /&gt;&amp;lt;/endpoints&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;6. สั่งรันเป็นอันเสร็จ เรียบร้อย จะได้ Web Service มาใช้งานแล้วครับ คร้าวหน้า จะมาเขียน jax-ws client ไว้สำหรับเรียกนะครับ ซึ่งมีทั้งแบบ Sync, Async ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7496060720814610310?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7496060720814610310/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7496060720814610310' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7496060720814610310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7496060720814610310'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/07/jax-ws-tomcat.html' title='การสร้าง jax-ws บน Tomcat'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5772298840036059538</id><published>2010-03-18T15:05:00.002+08:00</published><updated>2010-03-18T18:09:02.315+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic 10.3'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Weblogic and Maven Integration</title><content type='html'>ขอแปะเก็บไว้หน่อยนึง การใช้ maven ร่วมกับ Weblogic&lt;br /&gt;&lt;a href="http://mohanrajk.wordpress.com/2009/03/02/weblogic-103-and-maven-integration/"&gt;http://mohanrajk.wordpress.com/2009/03/02/weblogic-103-and-maven-integration/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blogwitter.com/category/java/weblogic/"&gt;http://www.blogwitter.com/category/java/weblogic/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;แก้ไขเรื่อง mvn weblogic:deploy ครับ ต้องไปแก้ที่ setting ของ maven ถ้าทำงานบน windows น่ะครับ &lt;a href="http://timezra.blogspot.com/2009/06/maven-and-weblogic.html"&gt;http://timezra.blogspot.com/2009/06/maven-and-weblogic.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;เพิ่มเติมแก้ Bug บางอย่าง&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=724768"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=724768&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5772298840036059538?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5772298840036059538/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5772298840036059538' title='3 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5772298840036059538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5772298840036059538'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/03/weblogic-and-maven-integration.html' title='Weblogic and Maven Integration'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6154459348919152017</id><published>2010-02-24T14:50:00.003+08:00</published><updated>2010-02-24T15:37:20.330+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='jaxb'/><category scheme='http://www.blogger.com/atom/ns#' term='xjc'/><title type='text'>Covert XSD to Java โดยใช้ jaxb</title><content type='html'>1. เราจะใช้คำสั่ง xjc เพื่อที่จะแปลงข้อมูลใน xsd เป็น java object เพื่อเราจะใช้งานได้ โดยใช้คำสั่ง&lt;br /&gt;&lt;code&gt;xjc -p &lt;packagename&gt; -d src &lt;span style="font-family: Georgia,serif;"&gt;&lt;xsdfile&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;2. พอทำเสร็จเราจะได้ java class ไว้ใช้งานในระบบ ถ้ามีการยิง xml มาจะสามารถ convert เป็น java object ได้เลย&lt;br /&gt;3. ต่อไปวิธีใช้งานจะเรียกกันว่า Marshall กับ UnMarshall&lt;br /&gt;3.1 Marshall คือการที่เราต้องการแปลงจาก Java Object ไปเป็น XML File โดยจะมีการใช้คร่าวๆ ดังนี้&lt;br /&gt;&lt;code&gt;&lt;br /&gt;JAXBContext jaxbContext&lt;br /&gt;            = JAXBContext.newInstance&lt;br /&gt;              (&lt;&lt;span style="color: rgb(255, 0, 0);"&gt;PackageName&lt;/span&gt;&gt;);&lt;br /&gt;Marshaller marshaller = jaxbContext.createMarshaller();&lt;br /&gt;ObjectFactory factory = new ObjectFactory();&lt;br /&gt;        Temp aTemp = factory.createTemp();&lt;br /&gt;marshaller.marshal(aTemp, &lt;&lt;span style="color: rgb(255, 0, 0);"&gt;Type&lt;/span&gt;&gt;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;(สามารถใช้ dom4j ที่เป็น DocumentResult ในการโยนค่าไปรับ xml ค่าได้) เช่น&lt;br /&gt;DocumentResult dr = new DocumentResult(); แล้วเอา dr ไปใส่ในช่อง &lt;type&gt;&lt;br /&gt;3.2 UnMarshall จะทำการแปลงค่าจาก XML File มาใส่ใน Object ให้เราเลย&lt;br /&gt;&lt;code&gt;&lt;br /&gt;JAXBContext jaxbContext&lt;br /&gt;            = JAXBContext.newInstance&lt;br /&gt;              (&lt;&lt;span style="color: rgb(255, 0, 0);"&gt;PackageName&lt;/span&gt;&gt;);&lt;br /&gt;            Unmarshaller unmarshaller =&lt;br /&gt;                jaxbContext.createUnmarshaller();&lt;br /&gt;            Temp aTemp&lt;br /&gt;                = (Temp)unmarshaller.unmarshal(&lt;br /&gt;                        new File("src/main/resources/dataTest.xml"));&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6154459348919152017?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6154459348919152017/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6154459348919152017' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6154459348919152017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6154459348919152017'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/02/covert-xsd-to-java-jaxb.html' title='Covert XSD to Java โดยใช้ jaxb'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-146764797521958980</id><published>2010-02-06T13:00:00.002+08:00</published><updated>2010-02-06T13:47:46.976+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Install'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic 11g'/><title type='text'>Install Web Logic 11g On Mac OS X</title><content type='html'>ผมคิดว่าน่าจะใช้ได้ทุกเวอร์ชั่นน่ะครับ เพราะน่าจะมีปัญหาเดียวกันหมดเลย ทำตามนี้ครับ&lt;br /&gt;1. Config JVM ก่อนครับ ตามนี้นะครับ (ถ้าไม่ทำตอน install มันจะหา JVM ตอน install ไม่ได้น่ะครับ)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ cd /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home&lt;br /&gt;$ sudo mkdir jre&lt;br /&gt;$ sudo mkdir jre/lib&lt;br /&gt;$ sudo mkdir jre/lib&lt;br /&gt;$ sudo touch jre/lib/rt.jar&lt;br /&gt;$ sudo touch jre/lib/core.jar&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;1. Download Weblogic Server มาก่อนครับ ให้เลือก generic unix จะได้ .jar file มาครับ&lt;br /&gt;2. พอไปไฟล์มาแล้ว double click install ไม่ได้น่ะครับ มันจะ out of memory เพราะมัน heavy server ครับ ต้อง เรียกผ่าน command เอาน่ะครับ&lt;br /&gt;&lt;code&gt;java -Xmx1024m  -Dos.name=unix -jar wls1032_generic.jar&lt;/code&gt;&lt;br /&gt;3.  แล้วก็ทำตาม step เลยครับ ก็จะลงได้ล่ะ&lt;br /&gt;4. มา config memory เพิ่มครับ เพราะ start แล้วจะ out of memory อีกรอบ&lt;br /&gt;5. ให้หา MEM_ARG คำนี้ที่มีการ set ไว้น่ะครับ แล้วเพิ่ม &lt;code&gt;-XX:MaxPermSize=128m &lt;/code&gt; ก็จะสามารถเข้าหน้า admin console ได้แล้วน่ะครับ&lt;br /&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://avernet.blogspot.com/2008/02/installing-bea-weblogic-on-mac-os-x.html"&gt;http://avernet.blogspot.com/2008/02/installing-bea-weblogic-on-mac-os-x.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://yusuke.homeip.net/blog/2008/09/20/running_weblogic_server_10g_release_3_on_a_mac.html"&gt;http://yusuke.homeip.net/blog/2008/09/20/running_weblogic_server_10g_release_3_on_a_mac.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-146764797521958980?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/146764797521958980/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=146764797521958980' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/146764797521958980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/146764797521958980'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/02/install-web-logic-11g-on-mac-os-x.html' title='Install Web Logic 11g On Mac OS X'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5328379897493750142</id><published>2010-01-25T18:16:00.003+08:00</published><updated>2010-01-25T18:33:53.290+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Share Library'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic 10.3'/><title type='text'>การ set library path บน Weblogic 10.3</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;*คำเตือน บาง library มี dependency หา lib ใน jar file บางทำให้ไม่สามารถ start server ได้เลยครับ ระวังนิดนึง (ที่ผมเจอก็ osgi.jar มันวิ่งไปหาไม่เจอ server start ไม่ขึ้นเลยที่เดียวเชียว -_-"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.  โดยปกติเราสามารถเอา jar file ไปวางไว้ที่ folder lib ได้เลยครับ ให้เช็คก่อนดูที่ server (double click ที่ server) จะขึ้นหน้าต่าง config ของ server ขึ้นมาให้ดูที่ Domain Home ครับ ว่า path อยู่ตรงไหน&lt;br /&gt;2. เข้าไปที่ Folder lib แล้วเอา jar file มาว่าง start server เป็นอันใช้งาน library ได้แล้วครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5328379897493750142?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5328379897493750142/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5328379897493750142' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5328379897493750142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5328379897493750142'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/01/set-library-path-weblogic-103.html' title='การ set library path บน Weblogic 10.3'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1404808346933588963</id><published>2010-01-22T16:27:00.002+08:00</published><updated>2010-01-22T16:47:54.660+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic 10.3'/><title type='text'>ปัญหา The domain edit lock is owned by another session ของ Weblogic 10.3</title><content type='html'>ข้อความจะขึ้นประมาณนี้ครับ ตอนที่เราจะ deploy application ลงไปน่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;The domain edit lock is owned by another session - this deployment operation requires exclusive access to the edit lock and hence cannot proceed. You can release the lock in Administration Console by first disabling "Automatically Acquire Lock and Activate Changes" in Preference, then clicking the Release Configuration button. - this deployment operation requires exclusive access to the edit lock and hence cannot proceed. You can release the lock in Administration Console by first disabling "Automatically Acquire Lock and Activate Changes" in Preference, then clicking the Release Configuration button.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ผมใช้ตัว Workshop ที่ติดมากับ Weblogic 10.3 น่ะครับ พื้นฐานก็ Eclipse น่ะครับ&lt;br /&gt;&lt;br /&gt;1. ให้เข้าไปที่ admin console ครับ แล้วไปส่วนของ preference อยู่ด้านบนน่ะครับ แล้วไป เอาเครื่องหมายถูก หน้า Automatically Acquire Lock and Activate Changes ออก ครับ แล้ว save แล้วหลังจากนั้นก็ restart server ทีนึง&lt;br /&gt;2.  Login เข้าหน้า admin console ใหม่ แล้วไปคลิกที่ Release Configuration พอเสร็จแล้วจะทำการ deploy applcation ได้ปกติ ครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;&lt;br /&gt;- ที่เป็น default ของ web logic user : weblogic, pass : weblogic&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;reference&lt;/span&gt;&lt;br /&gt;&lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=717773"&gt;http://forums.oracle.com/forums/thread.jspa?threadID=717773&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1404808346933588963?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1404808346933588963/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1404808346933588963' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1404808346933588963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1404808346933588963'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/01/domain-edit-lock-is-owned-by-another.html' title='ปัญหา The domain edit lock is owned by another session ของ Weblogic 10.3'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4503299472719091022</id><published>2010-01-22T12:19:00.001+08:00</published><updated>2010-01-22T12:23:42.959+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weblogic 8.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Share Library'/><title type='text'>การ set library path บน Weblogic 8.1</title><content type='html'>การ set จะไม่เหมือนของ websphere น่ะครับที่สามารถ set ผ่านหน้่า GUI ได้เลย แต่ Weblogic ไม่สามารถทำได้ (หรือผมยังหาไม่เจอไม่รู้ครับ) &lt;br /&gt;โดยให้ set CLASSPATH ไปที่ jar file ตัวที่เราต้องการอ้างถึง หรือทำการ set ใน startWebLogic.cmd ใน windows หรือ startWebLogic.sh ใน unix  แล้วไปแก้ส่วนตรง&lt;br /&gt;set CLASSPATH ทำการเพิ่ม jar file พี่เราต้องการไป หรือจะเขียนเป็น variable ไว้ก็ได้ เช่น set APPS_CLASSPATH=xxx แล้วทำการ เพิ่ม %APPS_CLASSPATH% ลงไปแทนก็ได้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4503299472719091022?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4503299472719091022/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4503299472719091022' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4503299472719091022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4503299472719091022'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2010/01/set-library-path-weblogic-81.html' title='การ set library path บน Weblogic 8.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5467280750409464844</id><published>2009-09-30T16:16:00.003+08:00</published><updated>2009-09-30T16:21:39.462+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring batch'/><title type='text'>Bug Spring Batch : Exception the given trigger will never fire</title><content type='html'>&lt;div&gt;สำหรับคนที่ใช้ Spring Batch นะครับ เวลาใช้งานแล้ว ขึ้น Exception ประมาณ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Caused by:&lt;/b&gt; org.quartz.SchedulerException: Based on configured schedule, the given trigger will never fire.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.quartz.core.QuartzScheduler.scheduleJob(QuartzScheduler.java:774)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.quartz.impl.StdScheduler.scheduleJob(StdScheduler.java:276)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.springframework.scheduling.quartz.SchedulerAccessor.addTriggerToScheduler(SchedulerAccessor.java:346)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:276)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:483)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;... 39 more&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;แสดงว่าอาจจะเป็นว่า เครื่องเราใช้ปี พ.ศ. น่ะครับ วิธีแก้ให้แก้ที่ Regional and Language Options แล้ว Config ให้เป็น English (ไม่ใช่ thailand น่ะครับ) แล้วมันก็จะใช้งานได้ตามปกติ เปิดจากปีอย่างเดียวเลย -_-"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://confluence.atlassian.com/display/CONFKB/Error+creating+bean+with+name+scheduler"&gt;http://confluence.atlassian.com/display/CONFKB/Error+creating+bean+with+name+scheduler&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5467280750409464844?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5467280750409464844/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5467280750409464844' title='2 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5467280750409464844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5467280750409464844'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2009/09/bug-spring-batch-exception-given.html' title='Bug Spring Batch : Exception the given trigger will never fire'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8776882302456392302</id><published>2008-10-09T14:29:00.002+08:00</published><updated>2008-10-09T14:33:16.124+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='crystal report'/><title type='text'>การแก้ไข Crystal Report Error - Unexpected error determining relative path</title><content type='html'>&lt;span style="font-weight: bold;"&gt;การแก้ไขนะครับ &lt;/span&gt;&lt;br /&gt;คือมันจะหา File rpt ไม่เจอเราเลยจะทำการไปลบ Config CRConfig.xml ที่เป็น reportlocation ทิ้งไปน่ะครับ แล้วตอนเรียกให้เรียกตรงๆ จาก Path เลย เช่น C:/Temp/test.rpt  มันก็จะทำงานได้เลยครับ&lt;br /&gt;&lt;br /&gt;ปล.&lt;br /&gt;1. เราจะเอา CRConfig.xml ไปไว้ที่ classes&lt;br /&gt;2. ถ้าเราไม่อ้าง Path rpt ตรงๆ สามารถนำไปวางไว้ที่ classes ก็จะเรียกได้เหมือนกันครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8776882302456392302?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8776882302456392302/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8776882302456392302' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8776882302456392302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8776882302456392302'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/10/crystal-report-error-unexpected-error.html' title='การแก้ไข Crystal Report Error - Unexpected error determining relative path'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6203370791406988754</id><published>2008-09-19T17:54:00.003+08:00</published><updated>2008-09-19T18:16:34.185+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheduler'/><category scheme='http://www.blogger.com/atom/ns#' term='Notification'/><title type='text'>การ Add Notify สำหรับ Websphere 6.x Scheduler</title><content type='html'>การ Add Notify คือเราการที่เราจะดักข้อมูลของ Scheduler เช่น ตอนนี้ทำงานหรือยัง, สำเร็จ หรือไม่สำเร็จ เป็นต้นครับ&lt;div&gt;Copy มาเลยครับ&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;สร้าง EJB Notify ขึ้นมาก่อน สร้างเหมือน EJB ปกติ ครับ แต่ ให้ใช้&lt;/li&gt;&lt;ol&gt;          &lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Home : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;com.ibm.websphere.scheduler.NotificationSinkHome&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Remote : &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;com.ibm.websphere.scheduler.NotificationSink&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Add Method handleEvent(TaskNotificationInfo info) ลงไปที่ EJB ตัวที่เราสร้าง โดยเราสามารถดักได้ว่าเป็นอะไรจาก getEventType()  แล้วไปเช็คจาก TaskNotificationInfo.XXX ครับ จะมีให้เลือกอยู่&lt;/li&gt;&lt;li&gt;พอทำเสร็จแล้วเราจะ Set ลงไปที่ Task ของเราที่ต้องการ โดย ใช้ setNotificationSink(&amp;lt;Notification ที่เ&amp;amp;ราสร้างขึ้นมาgt;, &amp;lt;EventType ที่เ&amp;amp;ราต้องการจะดักจับgt;)&lt;br /&gt;&lt;ol&gt;&lt;li&gt;โดยเราจะดึงค่า Notification EJB จากการ LookUp ขึ้นมา ใช้วิธีดังนี้ &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Lookup ด้วย Context ได้ Object&lt;/li&gt;&lt;li&gt;ใช้ PortableRemoteObject.narrow(Obj ที่ได้มาจากการ Look Up , HomeClass ตัว NotificationSinkHome) ได้ Class Home แล้วใช้ตัวนี้ล่ะครับ&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Reference&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.jroller.com/odedns/category/Java"&gt;http://www.jroller.com/odedns/category/Java&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6203370791406988754?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6203370791406988754/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6203370791406988754' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6203370791406988754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6203370791406988754'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/add-notify-websphere-6x-scheduler.html' title='การ Add Notify สำหรับ Websphere 6.x Scheduler'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2383748538805423866</id><published>2008-09-16T17:09:00.004+08:00</published><updated>2008-09-16T17:31:11.753+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='seam'/><title type='text'>อธิบายเพิ่มเติม Quick Seam จาก http://www.seam66.com/blog/?p=67</title><content type='html'>&lt;div&gt;ผมลองทำตามที่นี่เลยครับ &lt;a href="http://www.seam66.com/blog/?p=67"&gt;http://www.seam66.com/blog/?p=67&lt;/a&gt;&lt;/div&gt;&lt;div&gt;ผมเขียนอธิบายเพิ่มเติมเอาน่ะครับ เพราะผมไม่รู้เรื่องน่ะครับ ว่ามันจะต้อง Config ยังไงเอาไปวางไว้ไหน เลยเขียนมาเผื่อใครไม่รู้จะได้รู้น่ะครับ &lt;/div&gt;&lt;div&gt;ปล. ถ้าอ่าน seam มาก่อนข้ามไปเลยครับ สำหรับคนที่ไม่รู้อะไรเลยแบบผม&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.  ขั้นแรกก็ติดตั้งก่อนที่ &lt;a href="http://www.seam66.com/blog/?p=62"&gt;http://www.seam66.com/blog/?p=62&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2. แล้วเราจะได้ Project Default มาชื่อ myproject ซึ่งจะอยู่ที่ C:\Projects\&lt;/div&gt;&lt;div&gt;3. พอเสร็จแล้ว เราก็จะ import Project เข้า Eclipse (3.4) โดยการคลิกขวาเลือก import แล้ว คลิกที่ General --&gt; Existing Projects into Workspace พอเสร็จเราก็จะได้ Workspce สำหรับใช้ seam ล่ะครับ&lt;/div&gt;&lt;div&gt;4. ถ้าเกิด sever ของ jboss เปลี่ยนไม่ตรงเหมือนใน Eclipse ที่ Config ไว้ ให้เข้าไปแก้ที่ build.properties ให้แก้ jboss.home ไปที่ที่ Server ที่ Eclipse Config&lt;/div&gt;&lt;div&gt;5. ต่อมาเรามาทำ Quick Seam ตาม &lt;a href="http://www.seam66.com/blog/?p=67"&gt;http://www.seam66.com/blog/?p=67&lt;/a&gt;&lt;/div&gt;&lt;div&gt;6. โดย File แ รก  เ ป็นส่วนที่ไ ว้สำหรับแ สดงผลออกหน้าจอ ให้เรา create ชื่ออะไรก็ได้ ลงท้ายด้วย .xhtml แล้ว เอา File ไปวางไว้ที่ view ครับ&lt;/div&gt;&lt;div&gt;7.  ต่อไปอีก File นึงเป็น Java File ไปวางไว้ที่ packace ที่เป็น Source Folder โดย ใน File นั้นเราอาจจะต้อง Import Package บางส่วนเพิ่มเข้ามา เพื่อให้มันไม่ error นะครับ&lt;/div&gt;&lt;div&gt;8. พอทำเสร็จลอง Save ทั้งหมด แล้ว Restart JBoss ดู ก็น่าจะใช้งานได้แล้วนะครับ&lt;/div&gt;&lt;div&gt;9. ลองอ่านคำอธิบายเพิ่มเติมได้ &lt;a href="http://www.seam66.com/blog/?p=77"&gt;http://www.seam66.com/blog/?p=77&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ปล. โดยปกติ ถ้าเรา Import เข้ามาแล้วมันจะ Auto Deploy ลง JBoss Server ให้เลยนะครับ สามารถดูว่ามันขึ้นได้หรือเปล่า ถ้าไม่ขึ้น อาจจะ Config JBoss Home ผิดใน build.properties ครับ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2383748538805423866?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2383748538805423866/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2383748538805423866' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2383748538805423866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2383748538805423866'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/quick-seam-httpwwwseam66comblogp67.html' title='อธิบายเพิ่มเติม Quick Seam จาก http://www.seam66.com/blog/?p=67'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-652795359045723574</id><published>2008-09-16T14:51:00.002+08:00</published><updated>2008-09-16T15:18:42.512+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basic ZK Framework ตอนที่ 6 การใช้งาน paging</title><content type='html'>อันนี้ทำแบบง่ายๆ ครับ คือใช้หลักการ Event Listener แบบ &lt;a href="http://yashima.blogspot.com/2008/09/basic-zk-framework-5-add-eventlistener.html"&gt;ตอนที่ 5&lt;/a&gt; ครับ&lt;div&gt;แต่อันนี้เราจะใช้ onPaging แทน โดยทำดังนี้&lt;/div&gt;&lt;div&gt;1. โดยเราไปเขียนเพิ่มที่ Zul File เพิ่ม paging เข้าไป แล้ว เราจะใช้ id เป็นตัวเรียก&lt;/div&gt;&lt;div&gt;2. ก็ไป AddEventListener ที่ paging ตัวนั้นเป็น onPaging โดยตัว paging จะมี Config &lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;pageSize จะเป็นตัวบอกว่าในหน้านึงมีกี่อัน&lt;/li&gt;&lt;li&gt;totalSize จะเป็นบอกว่ามีข้อมูลทั้งหมดเท่าไร&lt;/li&gt;&lt;li&gt;activePage เป็นตัวบอกว่าเราอยู่หน้าไหน โดยจะเริ่มที่ 0&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ต่อไปเป็นตัวอย่าง&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Paging pag = (Paging)this.getFellow("pageUser"); &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;--&gt; id ที่เรา Config ไว้ที่ Zul File&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;pag.setPageSize(10); --&gt; จำนวนข้อมูลต่อหน้า&lt;br /&gt;&lt;br /&gt;pag.setTotalSize(100);&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt; --&gt; จำนวนข้อมูลทั้งหมด&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;pag.addEventListener("onPaging", new EventListener() {&lt;br /&gt; public void onEvent(Event event) {&lt;br /&gt;  PagingEvent pe = (PagingEvent) event;&lt;br /&gt;  int pgno = pe.getActivePage();&lt;br /&gt;  int ofs = pgno * 10;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;//ใส่เพื่อจะให้ทำอะไร ถ้ากดที่ Paging แล้ว&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;});&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-652795359045723574?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/652795359045723574/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=652795359045723574' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/652795359045723574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/652795359045723574'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basic-zk-framework-6-paging.html' title='Basic ZK Framework ตอนที่ 6 การใช้งาน paging'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8880795820361025328</id><published>2008-09-15T22:49:00.003+08:00</published><updated>2008-09-15T23:27:45.310+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basic ZK Framework ตอนที่ 5 วิธี Add EventListener บน Java</title><content type='html'>การ Add EventListener ก็เหมือนกับว่าเราร้อยสายจาก Java ไปที่หน้าจอน่ะครับ เช่น เราบอกว่า onClick จะให้ไปทำอะไรเราสามารถมาเขียนที่ Java ได้เลย ว่าถ้ามี onclick แล้วจะให้ไปทำอะไรต่อ โดยที่เราไม่ได้ไปทำที่ ZUL File น่ะครับ (ถ้าไม่ เข้าใจโทษทีครับ ลองทำดูจะเข้าใจมากขึ้น) &lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ที่ผมจะสอนคือวิธีแบบธรรมดาที่เราใช้กับพวก onClick, onChange, etc... วิธีีดังนี้&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;1. เราจะทำการใช้ method ที่ชื่อ  addEventListener ซึ่งจะมีอยู่แล้วในพวก class ใน package org.zkoss.zul เช่น Label, Image&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;2. ซึ่งใน Method นี้จะมีการใส่ 2 ค่า โดยค่าแรกจะเป็น Event ที่เราต้องการจะดักจับ เช่น onClick เป็นต้น --&gt; ใส่คำนี้ลงไปเลยครับ เพราะรับค่า็เป็น String อยู่แล้ว&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;3. ต่อไปค่าอีกค่าจะใส่ Class EventListener เราจำต้อง สร้าง Class นี้ขึ้นมาเพื่อรับ ซึ่งจะมี Method บังคับคือ onEvent ซึ่งส่วนนี้นี่ล่ะ เราจะเอาไว้สำหรับว่าจะทำอะไรที่เราต้องการ&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ตัวอย่่างที่ทำไว้นะครับ&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;อันแรกตัว EventListener&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;private EventListener selectItemListener = new EventListener() {&lt;br /&gt;  &lt;br /&gt; public void onEvent(Event evt) {&lt;br /&gt;&lt;br /&gt;  Image img = (Image)evt.getTarget(); &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;เราจะทำการดึงค่าออกมาจากที่เรา addEventListener ไว้ครับ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  UserM userM = (UserM)img.getAttribute("sampleUserM"); &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;ดึงค่า attribute ที่เรา set ลงเราสร้าง Image ขึ้นมา&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  Executions.getCurrent().sendRedirect("zk/sample/userEdit.zul");&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public boolean isAsap() {&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;};&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ส่วนวิธีเรียกใช้งาน อันนี้ผมทำแบบ Add ใส่ตารางไว้แล้วถ้าเรามา Click จะไปทำงานที่ Event นะครับ&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Listcell listCell = new Listcell();&lt;br /&gt;listCell.setStyle("cursor: default");&lt;br /&gt;listCell.appendChild(image);&lt;br /&gt;Image image = new Image("images/edit.gif");&lt;br /&gt;image.setAttribute("sampleUserM", userM);&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; ทำการ set Attribute ชื่อ SampleUserM ขึ้นมา เราสามารถไปเรียกค่าขึ้นมาได้ที่ onEvent ใน EventListener เลยครับ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;image.setWidth("23px");&lt;br /&gt;image.setHeight("21px");&lt;br /&gt;image.setStyle("cursor: pointer;");&lt;br /&gt;&lt;br /&gt;image.addEventListener("onClick",selectItemListener); &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;ทำการ Add EventListener ในกรณีที่เรา Click ที่รูปนี้&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.zkoss.org/smalltalks/mvc3/"&gt;http://www.zkoss.org/smalltalks/mvc3/&lt;/a&gt; จาก &lt;a href="http://twitter.com/chanwit/statuses/921888332"&gt;@chanwit&lt;/a&gt;  อันนี้จะมีวิธีอื่นด้วยน่ะครับ&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8880795820361025328?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8880795820361025328/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8880795820361025328' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8880795820361025328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8880795820361025328'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basic-zk-framework-5-add-eventlistener.html' title='Basic ZK Framework ตอนที่ 5 วิธี Add EventListener บน Java'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5539888066189273813</id><published>2008-09-09T12:29:00.004+08:00</published><updated>2008-09-09T12:55:27.683+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basick ZK Framework ตอนที่ 4 Config ZK ให้เรียก EJB [On Java File]</title><content type='html'>เหมือนกับตอนก่อนหน้านี้น่ะครับ แต่อันนี้จะเรียกผ่าน Java เลย ซึ่งที่ผมลอง มีได้ตามนี้ครับ&lt;div&gt;&lt;ol&gt;&lt;li&gt;ถ้าเรียกแบบ Remote EJB สามารถเรียกได้อยู๋แล้วนะครับ คือเรียกอบบบอก IP ไปเลยว่าจะไปที่ไหน สามารถเรียกได้ไม่มีปัญหาครับ&lt;/li&gt;&lt;li&gt;เรียก Local EJB ผมใช้วิธีนี้นะ่ัครับ มีสองวิธี แต่การทำงานคล้ายๆ กัน (โดย Load ใน Servlet ก่อน หรือ บน ZUL File ครับ)&lt;ol&gt;&lt;li&gt;ไป Lookup EJB เสร็จแล้วเก็บค่าไว้ที่ static class สักตัวนึง เช่น Map&lt;/li&gt;&lt;li&gt;ไป Lookup EJB เหมือกนั แต่เก็บไว้ที่ ServletContext เลยครับ&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ตัวอย่างการเขียนแบบง่ายๆ ครับ ผมเขียนตอนเรียกไว้ที่ init ใน Servlet แล้วสั่งให้มัน Load on start up&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;แบบแรกเก็บค่าไว้ที่ static class&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;public class SampleContext {&lt;br /&gt;private static Map contextJNDI;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; เรียกตอน init ใน servlet แล้วสั่งให้ทำตอน load on startup&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;public void initContext(String jndiName) throws NamingException, CreateException {&lt;br /&gt; Context context = new InitialContext();&lt;br /&gt;&lt;br /&gt; ZKServiceEJBLocalHome home = (ZKServiceEJBLocalHome) context.lookup(jndiName);&lt;br /&gt;&lt;br /&gt; ZKServiceEJBLocal localObject = home.create();&lt;br /&gt;&lt;br /&gt; if(contextJNDI == null) {&lt;br /&gt;  contextJNDI = new HashMap();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if(contextJNDI.get(jndiName) == null) {&lt;br /&gt;  contextJNDI.put(jndiName,localObject);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; อันนี้จะไปเรียกตอนทำงานใน Java ครับ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;public ZKServiceEJBLocal getEJB(String jndiName) {&lt;br /&gt;&lt;br /&gt; return (ZKServiceEJBLocal)contextJNDI.get(jndiName);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;แบบที่สอง เก็บไว้ที่ ServletContext&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;เขียนไว้ที่ init ใน Servlet แ ล้ว Config ให้ Load on startup&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;servletConfig.getServletContext().setAttribute(jndiName, EJBLocalObject); &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;--&gt; jndiName ให้ตอนเวลาจะดึงข้อมูลมาใช้ให้ดึงด้วย jndiName ส่วน EJBLocalObject คือตัว EJBLocal ที่เรา Lookup ใน Context เรียบร้อยแล้ว ล้วเอามาเก็บไว้ที่นี่แทนครับ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ตอนเรียกใช้&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;ServletContext servletContext = (ServletContext)this.getDesktop().getWebApp().getNativeContext();&lt;br /&gt;servletContext.getAttribute(jndiName);&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5539888066189273813?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5539888066189273813/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5539888066189273813' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5539888066189273813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5539888066189273813'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basick-zk-framework-4-config-zk-ejb-on.html' title='Basick ZK Framework ตอนที่ 4 Config ZK ให้เรียก EJB [On Java File]'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5932607238391045081</id><published>2008-09-08T14:03:00.002+08:00</published><updated>2008-09-08T15:31:42.113+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basick ZK Framework ตอนที่ 3 Config ZK ให้เรียก EJB [On ZUL File]</title><content type='html'>สามารถใช้เรียกได้หมดเลยนะครับ ที่เรียกโดยใช้ JNDI แต่เรียกบน ZUL File นะครับ &lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;โดยเราเพิ่มว่าโหลด JNDIResolver เข้าไปน่ะครับ&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;?variable-resolver class="org.zkoss.zkplus.jndi.JndiVariableResolver"&lt;br /&gt;arg0="ZKSampleEAR"&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt; --&gt; ใช้สำหรับบอกว่า Application Name ของ Ear File&lt;/span&gt;&lt;br /&gt;arg1="sampleEJB=java:comp/env/ejb/sample/zkservice"  &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;--&gt; บอกว่าใช้ EJB Name ชื่ออะไรน่ะครับ แล้วเวลาตอนเรียกใช้จะใช้ sampleEJB ครับ&lt;/span&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;โดยวิธีการเรียกใช้งานจะเป็นดังนี้&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;&amp;lt;zscript&amp;gt;&lt;br /&gt; import sample.zk.SampleServiceLocal; &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;--- Import Class ที่เราใช้เข้ามา&lt;/span&gt;&lt;br /&gt; SampleServiceLocal sampleBean = (SampleServiceLocal)sampleEJB; &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;-- Cast Class ให้เป็นตัวที่เราต้องใช้งานครับ&lt;/span&gt;&lt;br /&gt; SampleServiceLocal.doService(); &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;--- เรียกการทำงาน&lt;/span&gt;&lt;br /&gt;&amp;lt;/zscript&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;*สำหรับคนที่ใช้ Rad deploy บน Websphere ครับ&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;อันที่จริง Application Server ก็ต้องทำเหมือนกันครับ แต่ผมจะบอกวิธีสำรับคนที่ใช้บน Rad ครับ โดยไป double click ที่ web.xml แล้วไปที่ Tab Reference แล้ว Add EJB Reference เข้าไป โดยชื่อที่เราใช้เรียกจะเป็น อันบนด้านขวา แต่อันล่างด้านขวาจะไป mapping กับ ที่ไปเรียกที่ EJB Project น่ะครับ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.zkoss.org/smalltalks/jndi/"&gt;http://www.zkoss.org/smalltalks/jndi/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5932607238391045081?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5932607238391045081/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5932607238391045081' title='3 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5932607238391045081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5932607238391045081'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basick-zk-framework-3-config-zk-ejb-on.html' title='Basick ZK Framework ตอนที่ 3 Config ZK ให้เรียก EJB [On ZUL File]'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7560058365047151807</id><published>2008-09-04T11:46:00.003+08:00</published><updated>2008-09-04T12:29:19.925+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basick ZK Framework ตอนที่ 2 มาลองใช้ Zk</title><content type='html'>มาต่อตอนที่ 2 กันครับ ตอนที่ 1 ดู &lt;a href="http://yashima.blogspot.com/2008/09/basick-zk-framework-1-config-zk.html"&gt;ที่นี่&lt;/a&gt;&lt;div&gt;ตอนนี้มาลองเล่นกันเลยว่ามันทำงานอย่างไรบ้าง&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ตัวอย่าง index.zul&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;?page title="Welcome to ZK Web"?&amp;gt; &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- กำหนดว่า title ของหน้าใช้ชื่ออะไร&lt;/span&gt;&lt;br /&gt;&amp;lt;window title="Welcome to ZK Web" &lt;br /&gt; border="normal" id="login" use="com.zk.LoginView" onOK="login.onOk()"&amp;gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;use ใช้สำหรับว่าจะไปใช้ Java Class ไหน ส่วน id จะเป็น Reference ไว้สำหรับใน window ตัวนี้ โดยเวลาใช้จะใช้ id.method ที่จะใช้น่ะครับ&lt;/span&gt;&lt;br /&gt;&amp;lt;textbox id="username"/&amp;gt; &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;--  กำหนดว่าเป็น input แบบข้อความ โดยกำหนดชื่อเป็น username&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;และ onOK หมายถึงถ้าเรากด Enter ที่หน้านี้จะเข้าไปทำงานที่ login.onOk()&lt;/span&gt;&lt;br /&gt; &amp;lt;button label="OK" onClick="login.onOk()"/&amp;gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;  &amp;lt;-- เป็นการบอกว่าถ้ากดปุ่มนี้จะไปที่ Method ชื่อ onOk() ใน Class com.zk.LoginView&lt;/span&gt;&lt;br /&gt; &amp;lt;button label="Cancel" onClick="login.onCancel()"/&amp;gt; &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- จะเหมือนกับ ข้างบนครับ&lt;/span&gt;&lt;br /&gt;&amp;lt;/window&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ต่อไปตัวอย่างของ Java Class นะครับ&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;package com.zk.service;&lt;br /&gt;&lt;br /&gt;import java.io.UnsupportedEncodingException;&lt;br /&gt;import java.net.URLEncoder;&lt;br /&gt;&lt;br /&gt;import org.apache.log4j.Logger;&lt;br /&gt;import org.zkoss.zk.ui.Executions;&lt;br /&gt;import org.zkoss.zul.Messagebox;&lt;br /&gt;import org.zkoss.zul.Textbox;&lt;br /&gt;import org.zkoss.zul.Window;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class LoginView extends Window { &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- ทำเพื่อให้เพื่อเราสามารถดึงค่าได้&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; private static final long serialVersionUID = -8725354218872079732L;&lt;br /&gt; private static Logger log = Logger.getLogger(LoginView.class);&lt;br /&gt;&lt;br /&gt; public void onCreate(Window main) { //does initialization&lt;br /&gt;  log.debug("..... init(Window main)");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onOk() {  &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- พอเรากด Ok ที่หน้าจอจะมาเข้า Method นี้&lt;/span&gt;&lt;br /&gt;  log.debug("..... save(Window main)");&lt;br /&gt;  String userName = ((Textbox)getFellow("username")).setValue(""); &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- ดึงค่าจาก textbox เมื่อกี้ที่ใช้ id เป็น username&lt;/span&gt;&lt;br /&gt;  Messagebox.show("Username correct.", "Ok", Messagebox.OK, Messagebox.OK); &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- โชว์ Popup บอกว่า Username correct. &lt;/span&gt;&lt;br /&gt;   &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onCancel() { //cancel any changes&lt;br /&gt;  log.debug("..... cancel(Window main)");&lt;br /&gt;  &lt;br /&gt;  ((Textbox)getFellow("username")).setValue(""); &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&amp;lt;-- เป็นการกำหนดค่าให้ username เป็นค่าว่าง&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7560058365047151807?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7560058365047151807/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7560058365047151807' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7560058365047151807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7560058365047151807'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basick-zk-framework-2-zk.html' title='Basick ZK Framework ตอนที่ 2 มาลองใช้ Zk'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1905815432212811022</id><published>2008-09-02T21:43:00.005+08:00</published><updated>2008-09-02T22:20:26.678+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zk'/><title type='text'>Basick ZK Framework ตอนที่ 1 Config ZK</title><content type='html'>สามารถ Download ได้ &lt;a href="http://www.zkoss.org/"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;เป็น Ajax Framework ที่ไม่ต้องมานั่งเขียน Java script น่ะครับ หาข้อมูลเพิ่มเติมได่ที่หน้าเวบ&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;* สามารถใช้บน Websphere 6.x ได้ครับ ลองมาแล้ว Config เหมือนกันเลย&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ตอนนี้จะบอกว่าเราต้อง Config อะไรเพิ่มใน &lt;span style="font-weight: bold;"&gt;web.xml&lt;/span&gt; บ้างนะ่ครับ ที่จริงก็อ่านได้ตามเวบเหมือนกัน ผมรวบรวมไว้จะได้ค้นง่ายๆ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;เพิ่มส่วนของ Listener ด้วย&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;Used to cleanup when a session is destroyed&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;ZK Session Cleaner&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;listener-class&amp;gt;org.zkoss.zk.ui.http.HttpSessionListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;lt;/listener&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ต่อไปเพิ่มในส่วยของ Servlet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;ZK loader for ZUML pages&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;zkLoader&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;org.zkoss.zk.ui.http.DHtmlLayoutServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;update-uri&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;/zkau&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt; &lt;span style="color: rgb(255, 0, 0);"&gt;สำหรับตรงนี้ ถ้า Config บน Websphere อาจจะต้องลองเปลี่ยนเลขดูน่ะครับ ถ้ามันยังไม่ได้&lt;/span&gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;The asynchronous update engine for ZK&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;auEngine&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;org.zkoss.zk.au.http.DHtmlUpdateServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;หลังจากนั้นก็เพิ่ม Servlet-Mapping&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;zkLoader&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;*.zul&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;zkLoader&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;*.zhtml&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;auEngine&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/zkau/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;เป็นอันเสร็จครับ ก็จะทำให้ใช้ Zk Framework ได้ล่ะ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ลองเทสโดยการเขียน index.zul แบบนี้ดูครับ ว่ามันขึ้นหน้าจอหรือเปล่า&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;window title="My First window" border="normal" width="200px"&amp;gt;&lt;br /&gt; Hello, World!&lt;br /&gt;&amp;lt;/window&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1905815432212811022?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1905815432212811022/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1905815432212811022' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1905815432212811022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1905815432212811022'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/09/basick-zk-framework-1-config-zk.html' title='Basick ZK Framework ตอนที่ 1 Config ZK'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2763478161613673762</id><published>2008-07-29T15:45:00.006+08:00</published><updated>2008-09-02T22:18:43.335+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>Config Servlet Cache Instances [On Websphere 6.0-6.1]</title><content type='html'>&lt;p&gt;จะสอนวิธี Config Servlet Cache ของ Websphere ซึ่งมีวิธี 3 แบบครับ&lt;/p&gt;&lt;p&gt;ฮธิบายก่อน Servlet Cache คือ การเก็บค่าไว้โดยที่ไม่ต้องทำการประมวณผลใหม่ในกรณีที่เราเข้ามาด้วย parameter เดิมนะครับ (ที่จริงมีกำหนดหลายแบบ ผมขอบอกเฉพาะที่เป็น Parameter นะครับ) เช่น สมมตผมกำหนด ว่าให้ Servlet SampleCache ไว้เป็น Servlet Cache แล้วกำหนด Parameter ให้ productId เป็นไว้ เมื่อเราเข้าหน้าเวบด้วย productId=1 ครั้งแรกจะยังเข้า Servlet อยู่ แล้วครั้งต่อๆ ไปพอเราลอง Refresh หน้าดูแล้วจะไม่มีการเข้าไปใน Process ของ Servlet อีกครับ จะใช้ค่าเดิมที่เราเข้าไปครั้งแรกเลย (สามารถกำหนด Timeout ได้ครับ)&lt;/p&gt;&lt;p&gt;เราต้อง Config ให้ Websphere ใช้งาน Servlet Cache ก่อนโดย&lt;/p&gt;&lt;ol&gt;&lt;li&gt;ไปที่ Servers --&gt; Application Servers&lt;/li&gt;&lt;li&gt;แล้วเลือก Server ที่เราต้องการจะ Config Servlet Cache&lt;/li&gt;&lt;li&gt;ดูที่ทางขวา จะมี Container Settings ให้เลือกที่ Web Container Settings --&gt; Web Container&lt;/li&gt;&lt;li&gt;พอกดเข้าไปจะเห็น Enable Servlet Caching แล้วติ๊ก&lt;/li&gt;&lt;li&gt;พอทำเสร็จก็ Restart Server ครับ เป็นอัน Config Servlet Cache ให้ใช้งานได้ล่ะ&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;ต่อไปเรามา Config Servlet Cache ที่เครื่องเราต่อ (ผมใช้ Config จาก cachespec.xml) ตอนแรกเราจะต้องไปเอา cachespec.xml, cachespec.dtd มาก่อน โดยจะอยู่ที่ xxx\base_v6\properties ครับ แล้ว Copy มาไว้ที่ Project ของเรา ที่ Path --&gt; WEB-INF&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;แบบที่ 1 จะเป็นการ Config ให้ดูที่ Path&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;cache-entry&amp;gt;&lt;br /&gt;&amp;lt;class&amp;gt;servlet&amp;lt;/class&amp;gt; --&gt; กำนหดให้เป็นชนิด Servlet&lt;br /&gt;&amp;lt;name&amp;gt;/ProductDisplay&amp;lt;/name&amp;gt; --&gt; Servlet Path ชื่อนี้&lt;br /&gt;&amp;lt;cache-id&amp;gt;&lt;br /&gt;&amp;lt;component id="productId" type="parameter"&amp;gt; --&gt; กำหนดให้ Parameter ที่ส่งมาถ้ามีตัวนี้ ซ้ำ จะไม่ทำงานซ้ำ&lt;br /&gt;  &amp;lt;required&amp;gt;true&amp;lt;/required&amp;gt; --&gt; จำเป็นจะต้องมี Parameter ตัวนี้ส่งมาหรือเปล่า&lt;br /&gt;&amp;lt;/component&amp;gt;&lt;br /&gt;&amp;lt;timeout&amp;gt;180&amp;lt;/timeout&amp;gt; --&gt; กำหนด Timeout ของ Servlet Cache&lt;br /&gt;&amp;lt;/cache-id&amp;gt;&lt;br /&gt;&amp;lt;/cache-entry&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;แบบที่ 2 กำหนดที่ตัว Class เลย&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;cache-entry&amp;gt;&lt;br /&gt;&amp;lt;class&amp;gt;servlet&amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;com.webpage.servlet.ProductDisplay2.class&amp;lt;/name&amp;gt; --&gt; บอกว่าเป็น Servlet Class ไหน&lt;br /&gt;&amp;lt;cache-id&amp;gt;&lt;br /&gt; &amp;lt;component id="productId" type="parameter"&amp;gt;&lt;br /&gt;    &amp;lt;required&amp;gt;true&amp;lt;/required&amp;gt;&lt;br /&gt; &amp;lt;/component&amp;gt;&lt;br /&gt; &amp;lt;timeout&amp;gt;300&amp;lt;/timeout&amp;gt;&lt;br /&gt;&amp;lt;/cache-id&amp;gt;&lt;br /&gt;&amp;lt;/cache-entry&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;แบบที่ 3 จะคล้ายๆ กับแบบแรก แต่จะใช้ Servlet Cache ของ Application Server เลย&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;cache-instance name="cache/servlet/sample"&amp;gt; --&gt; กำหนด JNDI Name ของ Servlet Cache&lt;br /&gt;&amp;lt;cache-entry&amp;gt;&lt;br /&gt;  &amp;lt;class&amp;gt;servlet&amp;lt;/class&amp;gt;&lt;br /&gt;  &amp;lt;name&amp;gt;/ProductDisplay3&amp;lt;/name&amp;gt;&lt;br /&gt;  &amp;lt;cache-id&amp;gt;&lt;br /&gt;     &amp;lt;component id="productId" type="parameter"&amp;gt;&lt;br /&gt;        &amp;lt;required&amp;gt;true&amp;lt;/required&amp;gt;&lt;br /&gt;     &amp;lt;/component&amp;gt;&lt;br /&gt;     &amp;lt;timeout&amp;gt;180&amp;lt;/timeout&amp;gt;&lt;br /&gt;  &amp;lt;/cache-id&amp;gt;&lt;br /&gt;&amp;lt;/cache-entry&amp;gt;&lt;br /&gt;&amp;lt;/cache-instance&amp;gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;วิธี Config Servlet Cache ของ Application Server&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;ให้ไปที่ Resources --&gt; Cache instances --&gt; Servlet cache instances&lt;/li&gt;&lt;li&gt;คลิกเข้ามาเสร็จ ก็เลือก New&lt;/li&gt;&lt;li&gt;แล้วกำหนดชื่อ JNDI Name ให้เป็นชื่อเดียวกับ ที่เรากำหนดใน cachespec.xml&lt;/li&gt;&lt;li&gt;Save แล้วก็ Restart Server เป็นอันเสร็จ&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.webagesolutions.com/knowledgebase/waskb/waskb008/index.html"&gt;http://www.webagesolutions.com/knowledgebase/waskb/waskb008/index.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2763478161613673762?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2763478161613673762/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2763478161613673762' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2763478161613673762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2763478161613673762'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/07/config-servlet-cache-instances-on.html' title='Config Servlet Cache Instances [On Websphere 6.0-6.1]'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4301292018284452968</id><published>2008-07-04T18:23:00.002+08:00</published><updated>2008-07-04T18:31:51.314+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='SIB'/><title type='text'>Data store tables</title><content type='html'>&lt;table cellpadding="4" cellspacing="0" border="1"&gt;&lt;br /&gt; &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td width="20%" align="center"&gt;&lt;strong&gt;Table name&lt;/strong&gt;&lt;/td&gt;&lt;div align="center"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;td width="80%" align="center"&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBOWNER&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Ensure exclusive access to the data store by an active messaging engine&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBCLASSMAP&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Catalogs the different object types in the data store&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBLISTING&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Catalogs the SIBnnn tables&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBXACTS&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Maintain the status of active two-phase commit transactions&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBKEYS&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Assign unique identifiers to objects in the messaging engine&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;SIBnnn, where nnn is a number&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Contain persisted objects such as messages and subscription information &lt;p&gt;&lt;span&gt;These&lt;br /&gt;tables hold both persistent and nonpersistent objects, using separate tables&lt;br /&gt;for the different types of data, according to the following convention:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SIB000 contains information about the structure of the data in the other&lt;br /&gt;two tables&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SIB001 contains persistent objects&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SIB002 contains nonpersistent objects that have been saved to the data store to reduce the messaging engine memory&lt;br /&gt;requirement&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.pmc.express.doc/ref/rjm0640_.html"&gt;Data store tables&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4301292018284452968?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4301292018284452968/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4301292018284452968' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4301292018284452968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4301292018284452968'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/07/data-store-tables.html' title='Data store tables'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7202215066726161914</id><published>2008-05-09T13:16:00.005+08:00</published><updated>2008-05-09T14:32:23.213+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Create Profile'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>วิธีการสร้าง Profile ใหม่บน RAD 6.0</title><content type='html'>C:\IBM\WAS 6.0\profiles\AppSrv01\installedApps\naphacharaNode01Cell\DefaultApplication.ear\DefaultWebApplication.war\WEB-INF&lt;br /&gt;&lt;br /&gt;เป็นวิธีการสร้างอย่างง่ายๆ ครับ เพราะมันไม่ยากแค่คลิกๆ แล้วก็จำบางอันว่าให้เอาออกแค่นั้นเองครับ โดยทำได้ดังนี้ครับ&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;ไปที่ Window --&gt; Preferences&lt;/li&gt;&lt;li&gt;ต่อไป ไปที่ Server เลือก Websphere&lt;/li&gt;&lt;br /&gt;&lt;li&gt;มันจะขึ้นหน้า Websphere แล้วเลือกที่ Create Profile&lt;/li&gt;&lt;br /&gt;&lt;li&gt;รอสักพัก จะขึ้นหน้าดังรูป&lt;/li&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/SCPh_LUhJ1I/AAAAAAAAB1g/wTFEUc5eeeU/s1600-h/Step01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/SCPh_LUhJ1I/AAAAAAAAB1g/wTFEUc5eeeU/s320/Step01.jpg" alt="" id="BLOGGER_PHOTO_ID_5198246870402541394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;แล้วก็ Next จะให้เรากรอก Profile Name&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/SCPkVbUhJ2I/AAAAAAAAB1o/XAbtoCxXcNE/s1600-h/Step02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/SCPkVbUhJ2I/AAAAAAAAB1o/XAbtoCxXcNE/s320/Step02.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249451677886306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;พอทำข้อ 5 เสร็จ ก็ Next จะเป็นการสร้าง Directory ของ Profile ไว้ว่าจะเอาไว้ที่ไหน&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/SCPkVbUhJ3I/AAAAAAAAB1w/kucrQvPSW0s/s1600-h/Step03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/SCPkVbUhJ3I/AAAAAAAAB1w/kucrQvPSW0s/s320/Step03.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249451677886322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Next ต่อไปจะเป็นการตั้งชื่อ Node กับ HostName&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ4I/AAAAAAAAB14/A3PND81uv_s/s1600-h/Step04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ4I/AAAAAAAAB14/A3PND81uv_s/s320/Step04.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249455972853634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Next จะเป็นการกำหนด Port ต่างๆ ของ Websphere (Default เลยครับ)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ5I/AAAAAAAAB2A/dfs1e54MMcM/s1600-h/Step05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ5I/AAAAAAAAB2A/dfs1e54MMcM/s320/Step05.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249455972853650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Next หน้านี้สำคัญครับ ให้ติกเอา Run the Application Server process as a Windows Service ออกนะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ6I/AAAAAAAAB2I/fuRWlQTME04/s1600-h/Step06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/SCPkVrUhJ6I/AAAAAAAAB2I/fuRWlQTME04/s320/Step06.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249455972853666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Next จะเป็นสรุปว่าต้องที่เรา Config ถูกต้องไหม ต้องใช้พื้นที่เท่าไร&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/SCPkjLUhJ7I/AAAAAAAAB2Q/IcC0hx27Kks/s1600-h/Step07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/SCPkjLUhJ7I/AAAAAAAAB2Q/IcC0hx27Kks/s320/Step07.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249687901087666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Next จะ Install Profile ใหม่ลง&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/SCPkjbUhJ8I/AAAAAAAAB2Y/UJsMGq8gTbA/s1600-h/Step08.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/SCPkjbUhJ8I/AAAAAAAAB2Y/UJsMGq8gTbA/s320/Step08.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249692196054978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;พอเสร็จแล้วมันจะบอก Finish แล้วเราก็จะสามารถ Create Server ลงที่ Profile ใหม่ได้เลย ทำจากหน้า Server ใน Rad 6.0 เลยครับ ง่าย&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/SCPkjbUhJ9I/AAAAAAAAB2g/9V04sVv7NjY/s1600-h/Step09.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/SCPkjbUhJ9I/AAAAAAAAB2g/9V04sVv7NjY/s320/Step09.jpg" alt="" id="BLOGGER_PHOTO_ID_5198249692196054994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7202215066726161914?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7202215066726161914/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7202215066726161914' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7202215066726161914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7202215066726161914'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/05/profile-rad-60.html' title='วิธีการสร้าง Profile ใหม่บน RAD 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_OyrxYulzYnY/SCPh_LUhJ1I/AAAAAAAAB1g/wTFEUc5eeeU/s72-c/Step01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4322118405895635877</id><published>2008-05-06T18:28:00.001+08:00</published><updated>2008-05-06T18:30:32.716+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cursor'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>SQL ไว้สำหรับนับจำนวน Cursor ที่เิปิดใน Oracle ครับ</title><content type='html'>เอาไว้สำหรับดูว่ามี Cursor อะไรเปิดอยู่บ้างใน Oracle ครับ&lt;br /&gt;&lt;br /&gt;select sid, sql_text from v$open_cursor order by sid, sql_text&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;br /&gt;&lt;a href="http://forum.java.sun.com/thread.jspa?threadID=135291"&gt;http://forum.java.sun.com/thread.jspa?threadID=135291&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4322118405895635877?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4322118405895635877/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4322118405895635877' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4322118405895635877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4322118405895635877'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/05/sql-cursor-oracle.html' title='SQL ไว้สำหรับนับจำนวน Cursor ที่เิปิดใน Oracle ครับ'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6233153867295655000</id><published>2008-05-02T17:05:00.002+08:00</published><updated>2008-05-02T17:10:31.642+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Datasource'/><title type='text'>Path Log ของ XA Datasource</title><content type='html'>Path จะอยู๋ประมาณนี้น่ะครับ จะอยู๋ใน tranlog น่ะครับในแต่ละ Profiles ซึ่งสาเหตุที่เราไปลบเพราะว่า บางทีWebsphere จะมี Log Error ค้างอยู่ใน Server ซึ่งที่ผมเห็นจะเกิดจาก XA Datasource น่ะครับ แล้วมันจะค้างตลอดใน Server เราเลยต้องตามไปลบ ไม่งั้นมันก็จะขึ้นตลอดน่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;จะขึ้นประมาณข้างล่างนี้น่ะครับ&lt;/span&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;[5/2/08 15:51:43:720 ICT] 00000050 RegisteredRes E   WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred.&lt;br /&gt;[5/2/08 15:51:43:723 ICT] 00000050 RegisteredRes E   WTRN0086I: XAException encountered during prepare phase for transaction 00000119A8D46B1C000000010004EC456280C5DF303AAF4EFAC6AC2CC0E8082A1BD2474A00000119A8D46B1C000000010004EC456280C5DF303AAF4EFAC6AC2CC0E8082A1BD2474A00000001. Local resources follow.&lt;br /&gt;[5/2/08 15:51:43:725 ICT] 00000050 RegisteredRes E   WTRN0089I: XATransactionWrapper@ cdc2b3  XAResource: com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl@1539da0  enlisted: true  mcWrapper.hashCode()31227578: Vote: commit.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6233153867295655000?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6233153867295655000/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6233153867295655000' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6233153867295655000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6233153867295655000'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/05/path-log-xa-datasource.html' title='Path Log ของ XA Datasource'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8518551102055950611</id><published>2008-05-02T16:57:00.004+08:00</published><updated>2008-05-02T17:11:04.214+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Datasource'/><title type='text'>วิธีแก้ว่าไม่สามารถใช้ Datasource ที่สร้างใหม่ได้</title><content type='html'>คือเวลาสร้างเสร็จแล้วลอง Test Connection แล้วไม่สามารถที่จะ Test ผ่านน่ะครับ จะขึ้นประมาณว่า&lt;br /&gt;invalid arguments in callDSRA0010E: SQL State = null, Error Code = 17,433&lt;br /&gt;แบบนี้ ผมได้ข้อมูลตามลิงค์ข้างล่างน่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;เหตุผลจากคุณ &lt;/span&gt;&lt;a style="color: rgb(255, 102, 0); font-weight: bold;" href="mailto:kenhygh@nc.rr.com"&gt;Ken Hygh&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;1) the application isn't closing connections and is thus 'leaking' them.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;2) the database doesn't have enough 'listeners' for the number of&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;connections you're trying to open. This generally happens in a clustered&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;environment, where the database must support #Connections x #Servers.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;3) there's a database call that's taking a very long time, and&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;eventually every configured connection gets into this call and until one&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0); font-weight: bold;"&gt;completes, no other threads can get a connection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;วิธีแก้ง่าย ก็ Restart Server นั้นครับ ก็จะใช้งานได้เลย&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/forums/message.jspa?messageID=13762630"&gt;http://www.ibm.com/developerworks/forums/message.jspa?messageID=13762630&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8518551102055950611?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8518551102055950611/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8518551102055950611' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8518551102055950611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8518551102055950611'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/05/datasource.html' title='วิธีแก้ว่าไม่สามารถใช้ Datasource ที่สร้างใหม่ได้'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3180392648471456244</id><published>2008-04-11T13:12:00.003+08:00</published><updated>2008-07-28T12:16:57.247+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><title type='text'>Guideline สำหรับ Update RAD</title><content type='html'>อันนี้เป็นแนะนำวิธีการที่จะ Update RAD ผ่าน Update Manager น่ะครับ เพราะบางทีการอัพจะมีปัญหา ผมเลยเขียนขั้นตอนง่าย ว่าควรจะทำอย่างไรเพราะบางที  Update ไปแล้วใช้งาน RAD ไม่ได้ ทำให้บางทีอาจจะต้องเสียเวลาลงใหม่ ถ้าเป็น Eclipse ผมคิดว่าไม่น่าจะมีปัญหาอะไรเพราะ ใช้ Copy วางไว้ ไม่ต้องเสียเวลา Update ผ่าน Update Manager ได้ครับ มีขั้นตอนดังนี้&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ควรจะ Update ทีละตัว แล้วลองเทสดูว่าเข้า RAD ได้หรือไม่ ถ้าเข้าได้ก็อัพเดท อันต่อไป&lt;/li&gt;&lt;li&gt;เริ่ม Update จาก ตัวที่เป็น Developer ก่อน แล้วควรจะ Update ใน Update ให้หมดก่อน ค่อยไป Optional Feature&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ไม่ควรลบข้อมูลในหน้า RollBacks (เพิ่อเพิ่มเนื้อที่ใน HDD น่ะครับ) ถ้าจะลบได้ ควรลองใช้ RAD สักสองสามวัน ก่อนว่าทุกๆ Perspective ยังเข้าใช้งานได้อยู่ไม่มีปัญหา ค่อยลบออกได้ครับ&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;* ผมแนะนำว่าควรใช้วิธีโหลดตัว Update มาลงที่เครื่องแล้ว Update เอาน่ะครับ จะง่ายกว่า แล้วไม่ค่อยจะจเอปัญหาเท่าไร โดย Update ตัว RPU(Rational Product Updater) ก่อน สามารทำผ่าน ตัว Update ได้เลยหรือโหลดก็ได้ครับ ตัวเล็กนิดเดียว เสร็จแล้วก็ สั่ง Update อีกทีว่ามีตัวอะไรบ้าง แล้ว Copy ชื่อไปหาใน Google ได้เลยครับ จะเจอลิงค์ Download เองเลยครับ แล้วก็โหลดเอา&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3180392648471456244?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3180392648471456244/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3180392648471456244' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3180392648471456244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3180392648471456244'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/04/guideline-update-rad.html' title='Guideline สำหรับ Update RAD'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2702261720630494095</id><published>2008-04-11T13:04:00.002+08:00</published><updated>2008-04-11T13:11:43.602+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Read Timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='Connection Timout'/><title type='text'>ความแตกต่างระหว่าง ConnectionTimeOut กับ ReadTimeOut</title><content type='html'>เป็นการ Config ของ HTTPURLConnection(JDK1.5) หรือ Socket เพราะบางทีผมเห็นว่าบางคนยังไม่ค่อยเข้าใจ ผมเลยเอามาเขียนให้รู้เื่รื่องกัน อันนี้ตามความเข้าใจของผมนะครับ ถ้าผิดพลาดประการใด ก็ขอโทษด้วยครับ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ConnectionTimeOut &lt;/span&gt;จะเป็นการ Config ว่า Connection ที่ติดต่อไปยัง Server สามารถอยู่ได้นานขนาดไหน ถ้าจะให้เห็นภาพ คือ ถ้าสมมติเรา Connect ไปแล้ว แต่ทางฝั่งนู้นไม่ได้เปิดเครื่องไว้ (Ping แล้ว TimeOut) เวลาที่รอจะเท่ากับที่ ConnectionTimeOut ที่เราตั้งไว้น่ะครับ (จะไม่สามารถตั้งเกิน Default ของ Server)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ReadTimeOut &lt;/span&gt;จะเป็นการที่เราสามารถติดต่อทางฝั่ง Server ได้แล้ว แต่เวลาที่มันตอบกลับมาช้ากว่าเวลาที่เราตั้งไว้ จะต่างกับ ConnectionTimeOut ตรงที่ว่า ReadTimeOut จะรู้ว่าเครื่อง Server ที่เราติดต่อนั้นยังอยู่ แต่ตอบกลับมาช้ากว่าที่เรากำหนดไว้น่ะครับ&lt;/li&gt;&lt;/ul&gt;เพราะฉะนั้น เราควรจะตั้งไว้ทั้งสองแบบในการ Config Connection เพราะเราไม่รู้แน่ว่า Server ที่เราติดต่อไปจะเกิดกรณีไหน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2702261720630494095?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2702261720630494095/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2702261720630494095' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2702261720630494095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2702261720630494095'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/04/connectiontimeout-readtimeout.html' title='ความแตกต่างระหว่าง ConnectionTimeOut กับ ReadTimeOut'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5423917210276751396</id><published>2008-03-21T12:01:00.003+08:00</published><updated>2008-03-21T12:14:35.243+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stop'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><category scheme='http://www.blogger.com/atom/ns#' term='Start'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>วิธีการ Stop, Start Websphere 6.1 ผ่าน Command Line</title><content type='html'>เป็นวิธีการ Stop, Start Websphere Application Server 6.0-6.1 น่ะครับ ทำบน Unix ผ่าน Command Line ถ้าทำบน Windows ผมว่าน่าจะง่ายกว่าน่ะครับ หลัการง่ายๆ ก็ดังนี้&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;สำหรับ Start Server&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;เราต้องไป Start Manager ก่อน (ซึ้งถ้าเรา Start เสร็จเราจะได้หน้า Admin Console มาครับ)  โดยจะอยู่ที่ .../IBM/Websphere/AppServer/bin ครับ จะชื่อ startManager (ใช้คำสั่ง ./startMAnager.sh)&lt;/li&gt;&lt;li&gt;ต่อไปเราจะมา Start Node ให้เข้าไปที่ Node ที่เราต้องการ โดยจะอยู่ที่ .../IBM/Websphere/AppServer/profiles/[Node]/bin จะชื่อ startNode.sh&lt;/li&gt;&lt;li&gt;พอเสร็จแล้วเราสามารถไป Start Server ได้ที่ หน้า Admin Console ได้เลยครับ หรือถ้าจะใช้ Command ก็สามารถทำได้ที่ เดียวกับ Node เลยครับ จะชื่อ startServer.sh ครับ&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;สำหรับ Stop Server&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ใช้หลักการเดียวกันเลยครับ แต่เปลี่ยนคำสั่งเป็น stopXXX.sh&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ดยจะต้องย้อนกลับขึ้นไปแทนโดยเริ่มที่ Server ก่อนแล้วย้อนขึ้นไปเรื่อยๆ น่ะครับ&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5423917210276751396?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5423917210276751396/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5423917210276751396' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5423917210276751396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5423917210276751396'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/03/stop-start-websphere-61-command-line.html' title='วิธีการ Stop, Start Websphere 6.1 ผ่าน Command Line'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6543519044049215440</id><published>2008-02-15T16:34:00.003+08:00</published><updated>2008-02-15T16:37:40.940+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Line'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>การหาอักขระ สำหรับขึ้นบรรทัดใหม่</title><content type='html'>โดยปกติ แล้วระว่าง Windows, Linux จะเป็นคนละตัวกันน่ะครับ&lt;br /&gt;ผมเลยใช้วิธีนี้แทน&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;System.getProperty("line.separator");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;จะได้ข้อมูลว่า System นั้น ตกบรรทัดเป้นอะไรน่ะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6543519044049215440?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6543519044049215440/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6543519044049215440' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6543519044049215440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6543519044049215440'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/02/blog-post.html' title='การหาอักขระ สำหรับขึ้นบรรทัดใหม่'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8399890803405669829</id><published>2008-01-29T12:45:00.000+08:00</published><updated>2008-01-29T12:56:13.785+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>Config Object Cache Instances [On Websphere 6.0-6.1]</title><content type='html'>ใช้ Cache ของ Websphere น่ะครับ โดยเราจะต้องเอาค่าเข้าไปเก็บ แล้วเรียกขึ้นมาอีกทีนึงน่ะครับ&lt;br /&gt;&lt;br /&gt;1. Object cache instances จะอยู่ที่ Resources --&gt; Cache instances&lt;br /&gt;2. เลือก New จะได้หน้าจอแบบนี้&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/R56w_IPQ_xI/AAAAAAAAA_w/KeJ4yjBY1mc/s1600-h/ObjectCache01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/R56w_IPQ_xI/AAAAAAAAA_w/KeJ4yjBY1mc/s320/ObjectCache01.jpg" alt="" id="BLOGGER_PHOTO_ID_5160756821602926354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. แล้วก็ใน Name กับ JNDI Name (เป็นชื้อที่เราใช้เรียกจาก Project น่ัะครับ)&lt;br /&gt;4. จะใช้งานได้แล้ว โดยเราจะต้องทำ Resource Reference ใน Project(Web Projectm EJB Project) ที่เราใช้เรียก โดยเป็น com.ibm.websphere.cache.DistributedMap น่ะครับ&lt;br /&gt;5. ใช้งานแบบ Map เลย Put ค่าลงไปก่อนจะใช้ก็ Get เอา&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8399890803405669829?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8399890803405669829/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8399890803405669829' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8399890803405669829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8399890803405669829'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/config-object-cache-instances-on.html' title='Config Object Cache Instances [On Websphere 6.0-6.1]'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_OyrxYulzYnY/R56w_IPQ_xI/AAAAAAAAA_w/KeJ4yjBY1mc/s72-c/ObjectCache01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1290301168417806008</id><published>2008-01-25T12:52:00.000+08:00</published><updated>2008-01-25T13:05:47.745+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='ethereal'/><title type='text'>วิธีการใช้งาน Ethereal เบื้องต้น</title><content type='html'>Ethereal เป็น โปรแกรมที่ไว้ดักจับข้อมูลใน Network ที่ผ่านเข้าออกจากเครื่องเราน่ะครับ บางทีพอเวลาเราเขียนโปรแกรมที่ต้องติดต่อกับระบบข้างนอก (เช่น การใช้ Web Service, XML Over HTTP) เราส่งข้อมูลไปครบ แต่ทำไมส่งไปฝั่งนู้นไม่ครบ ทำให้บางทีเราต้องมาตรวจสอบ Package ว่าข้อมูลที่ส่งไปจริงๆ ถูกหรือเปล่าน่ะครับ โหลดได้จาก &lt;a href="http://www.ethereal.com/"&gt;ที่นี่&lt;/a&gt; (ซึ่งเวลาเรา Install ให้เลือก Install WinPCap ด้วยนะครับ)&lt;br /&gt;&lt;br /&gt;รูปหน้าตาโปรแกรมครับ&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/R5lskYPQ_wI/AAAAAAAAA_o/aHYqvP72894/s1600-h/Ethereal.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/R5lskYPQ_wI/AAAAAAAAA_o/aHYqvP72894/s320/Ethereal.jpg" alt="" id="BLOGGER_PHOTO_ID_5159274220367183618" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;วิธีการใช้งานเบื้องต้น&lt;br /&gt;1. เลือกว่าเราจะจับข้อมูลทางช่องทางไหน โดยดูที่ Capture --&gt; Interfaces...&lt;br /&gt;2. พอกดไปแล้ว มันจะให้เลือก ก็เลือกที่เราต้องการ (ดูง่ายๆ อันที่มีข้อมูลวิ่งน่ะครับ ก็เลือกอันนั้นเอา)&lt;br /&gt;3. กด Capture เลย แล้วก็ Run Programmes ของเรา พอเสร็จก็กด Stop ก็จะได้ข้อมูลแล้วครับ แล้วก็ดูใน Package เอาก็จะรู้แล้วว่าข้อมูลที่ส่งไปถูกหรือไม่&lt;br /&gt;&lt;br /&gt;ปล.&lt;br /&gt;1. Filter ง่ายๆ ip.addr = IP ที่เราต้องการ&lt;br /&gt;2. ถ้าจะดูข้อมูลคลิกขวาที่ Package แล้วเลือก Follow TCP Stream ก็จะเห็นข้อมูลที่เราส่งไปครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1290301168417806008?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1290301168417806008/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1290301168417806008' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1290301168417806008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1290301168417806008'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/ethereal_25.html' title='วิธีการใช้งาน Ethereal เบื้องต้น'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_OyrxYulzYnY/R5lskYPQ_wI/AAAAAAAAA_o/aHYqvP72894/s72-c/Ethereal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1630392095724746401</id><published>2008-01-24T15:08:00.002+08:00</published><updated>2008-05-09T14:37:41.361+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Deploy Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>ปัญหาการ Deploy บน Websphere 6.0 - 6.1</title><content type='html'>ปัญหาส่วนใหญ่ต้องดู SystemOut.log เอาน่ะครับ อันนี้เป็น Guidline คร่าวๆ เท่านั้น&lt;br /&gt;&lt;br /&gt;1. ถ้าเคย Deploy แล้วได้ แต่อยู่ดีๆ พอ Deploy ใหม่แล้วไม่ได้ ลอง Export Ear File ใหม่แล้ว Deploy อีกที อาจจเป็นเพราะเวลาเรา Export มามีปัญหาน่ะครับ ลองทำซ้ำดู ก็จะได้&lt;br /&gt;&lt;br /&gt;2. ถ้า Deploy สำเร็จ แต่ Start Application ไม่ได้ อันนี้ต้องตรวจสอบดีๆ ว่าเป็นที่อะไรน่ะครับ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ลองดูว่า Duplication EJB Name หรือเปล่าครับ ถ้าใช้ ก็เปลี่ยนชื่อไม่ให้ซ้ำกัน&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Deploy EJB Project หรือยังก่อนที่จะ Export Ear File มันก็จะทำให้มีปัญหาเหมือนกัน&lt;/li&gt;&lt;li&gt;เป็นที่ Ear Project หรือเปล่า ลองตรวจดูว่า มี Web Module หรือ Module ไหนหรือเปล่าที่ Doesn't exist ใน Ear Project (เกิดกรณีที่เราเปลี่ยนชื่อ หรือลบมันทิ้งน่ะครับ)&lt;/li&gt;&lt;li&gt;ถ้ามีการเปลี่ยนชื่อ Project หรืออะไรต้องทำการ Remove ออกก่อนแล้ว Add ใหม่ ถ้าไม่ทำอาจจะทำให้ Deploy Application ไม่ได้น่ะครับ&lt;/li&gt;&lt;/ul&gt;3. ปัญหา Application ยาวเกิน 259 ตัวอักษร (เกิดใน Windows ผมไม่แน่ใจว่าบน Unix จะเป็นเปล่านะครับ) ให้เปลี่ยนชื่อ Application Exception จะประมาณ xxx too long น่ะครับ แก้ได้ดังนี้&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ถ้าสามารถเปลี่ยนชื่อ Application ได้ก็ให้เปลี่ยนให้สั้นลงนะครับ&lt;/li&gt;&lt;li&gt;ถ้าเป็นที่ WSDL File ให้ลบทิ้ง (ปกติมันจะ Generate WSDL File มาสองที่ ที่อยู่ในลึกมากๆ หลาย Folder อันนี้ให้ลบทิ้งได้เลยครับ ส่วนที่อยู่ใน web-inf/wsdl ไม่ต้องลบครับ)&lt;/li&gt;&lt;li&gt;ถ้าทำตามข้างบนไม่ได้ให้ Create Profile ใหม่แล้วเอา Application ไปไว้ที่ตัวใหม่แทนน่ะครับ ดูวิธี Create ได้ &lt;a href="http://yashima.blogspot.com/2008/05/profile-rad-60.html"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;4. อันนี้สำคัญมาก ถ้าเรา Deploy Ear File ของเิิดิม โดยเปลี่ยนชื่อเป็นตัวใหม่ พยายามแก้ JNDI Name (EJB) ทั้งหมด อย่าให้ซ้ำ เพราะจะทำให้ทุก Application ที่ Deploy อยู่บน Server ใช้งานไม่ได้ ต้อง Unistall แล้ว Deploy ใหม่ทั้งหมด (ดูจาก ใน Directory installedApp จะไม่มี ข้อมูลอยู่เลย) แต่สามารถ Export ข้อมูลออกมาได้ คือ Export แล้ว Uninstall แล้วเอาตัวที่ Export มา Deploy ใหม่น่ะครับ&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1630392095724746401?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1630392095724746401/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1630392095724746401' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1630392095724746401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1630392095724746401'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/deploy-websphere-60-61.html' title='ปัญหาการ Deploy บน Websphere 6.0 - 6.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6539321112316187817</id><published>2008-01-11T13:08:00.000+08:00</published><updated>2008-01-11T15:10:24.179+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><title type='text'>วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ Class ที่เราไปเรียก On Rad 6.0</title><content type='html'>ไว้ตรวจสอบเวลาเราเล่น Application แล้วหา Class ไม่เจอน่ะครับ (Class Not found) นะครับ&lt;br /&gt;1. ตรวจสอบดูที่ Ear Project (application.xml file) โดยดูดังนี้&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ที่ Tab Deployment ตรงส่วนของ Application ให้ตรง WAR classloader policy : เป็น APPLICATION (default จะเป็น MODULE)&lt;/li&gt;&lt;li&gt;ถ้าเป็น Error จาก Class จาก Jar File ที่เพิ่มเข้ามาแบบ Add External JARS จะต้องมาเพิ่ม Library ที่ Shared Library ใน Tab Deployment ด้วย โดยจะ Add เป็น Path ของ Jar นั้นได้เลยครับ ดังรูป&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/R4b-xtjgToI/AAAAAAAAA-Y/n6vRZLmQypQ/s1600-h/Cl0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/R4b-xtjgToI/AAAAAAAAA-Y/n6vRZLmQypQ/s320/Cl0.jpg" alt="" id="BLOGGER_PHOTO_ID_5154086953567669890" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;ถ้า Class เป็นของ Java Application ที่เราทำไว้ ให้ไปดูที่ Tab Module ให้ Add ตรงที่ Project Utility JARs ครับ&lt;/li&gt;&lt;li&gt;ถ้า Class เป็นของ Web Project, EJB Project เอามาใช้สามาถ Add ได้ที่ส่วนของ Module ใน Tab Module ครับ&lt;/li&gt;&lt;/ul&gt;2. ต่อไปตรวจสอบที่ Java JAR Dependencies (โดยคลิกขวาที่ Project แล้วเลือก Properties แล้วจะมี อันนี้อยู่ครับ) ว่ามีการคลิก Project ที่เราต้องการหรือยัง (อะไรไปเรียกอะไร ก็ Config ที่ Project ที่เรียกนั้นครับ)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;หมายเหตุ&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;อย่าใช้ชื่อ Class เดียวกัน Package เีดียวกัน แต่อยู่คนละ Project นะครับ เพราะ โปรแกรมจะไม่รู้ว่าดึงตัวไหนไปใช้ ทำให้สับสนได้ครับ&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6539321112316187817?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6539321112316187817/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6539321112316187817' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6539321112316187817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6539321112316187817'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/class-on-rad-60.html' title='วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ Class ที่เราไปเรียก On Rad 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_OyrxYulzYnY/R4b-xtjgToI/AAAAAAAAA-Y/n6vRZLmQypQ/s72-c/Cl0.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-43601950762147118</id><published>2008-01-11T11:31:00.000+08:00</published><updated>2008-01-11T12:27:27.302+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JNDI Name Not Found'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='web.xml'/><title type='text'>วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ JNDI Name On RAD 6.0</title><content type='html'>เป็นวิธีการดูเป็น Step น่ะครับ ว่าควรจะตรวจสอบอะไรบ้าง ถ้ามันมีปัญหา Exception JNDI Name Not found. น่ะครับ โดย ทำดังนี้&lt;br /&gt;&lt;br /&gt;1. ต้องตรวจสอบก่อนว่าอันไหนไปเรียก JNDI Name ตัวนั้น (Web Project, EJB Project, Project Client)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;วิธีการตรวจสอบนั้นให้ตรวจสอบจาก SystemOut.log ดูที่เป็น Error จาก Package ของเราแล้วดูลงไปเรื่อยๆ ก็จะรู้ว่ามาจากตัวไหน&lt;/li&gt;&lt;/ul&gt;2. หลังจากนั้นก็ไปดูที่ Reference ของตัวที่เรียกว่ามีการสร้างไว้หรือยัง โดย&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ถ้าไปเรียก EJB จะมี Config สองส่วน (อยู่ใน XML File ที่ Tab Reference)ดังรูป&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/R4bqO9jgTmI/AAAAAAAAA-I/_5PYRDCzHaQ/s1600-h/JNDIName01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/R4bqO9jgTmI/AAAAAAAAA-I/_5PYRDCzHaQ/s320/JNDIName01.jpg" alt="" id="BLOGGER_PHOTO_ID_5154064366334660194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;จากรูป Name ข้างบนจะเป็น JNDI Name ที่เราใช้เรียกใน Project นั้นครับ ตรวจสอบดูว่าเขียนชื่อถูกหรือเปล่า&lt;/li&gt;&lt;li&gt;อันล่างตรง WebSphere Binding ตรงนี้คือ JNDI Name ที่ไปเรียกที่ Websphere ชื่ออะไร คือ JNDI Name ที่อยู่ใน EJB Project นั่นล่ะครับ (โดยปกติเราจะไม่ต้อง Config อันนี้จะดึงค่าจาก JNDI Name ใน EJB Project ให้เลยน่ะครับ ยกเว้นกรณีที่เรามีการแก้ไข JNDI Name ที่ EJB Project มันจะไม่ Auto แก้ให้ต้องมาแก้ไขเองน่ะครับ)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;ถ้าไปเรียกอย่างอื่น เช่น Datasource ก็มี Config สองส่วนเหมือนกัน ดังรูป&lt;/li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/R4buI9jgTnI/AAAAAAAAA-Q/mDfHlwRf7zg/s1600-h/JNDIName02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/R4buI9jgTnI/AAAAAAAAA-Q/mDfHlwRf7zg/s320/JNDIName02.jpg" alt="" id="BLOGGER_PHOTO_ID_5154068661301956210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;ส่วนบนก็ชื่อที่เราใช้เรียกใน Project ของเรา&lt;/li&gt;&lt;li&gt;อันล่างตรง WEbsphere Binding ตรงนี้เป็นที่เราไปเรียก JNDI Name ที่ Server ครับ (อันนี้เราต้องเขียนค่าลงไปเองครับ ไม่มี Default ค่าให้)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;3. หลังจากตรวจดูจากข้อสอง เสร็จแล้ว&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ถ้าเป็น Web Project ให้ Save แล้ว Restart Application ถึงจะใช้งานได้ครับ&lt;/li&gt;&lt;li&gt;ถ้าเป็น EJB Project ให้ Deploy EJB แล้วก็จะใช้งานได้ครับ&lt;/li&gt;&lt;/ul&gt;4. หลังจากทำเสร็จแล้วควรจะไม่มีปัญหา JNDI Name Not Found แล้วนะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;หมายเหตุ&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="color: rgb(255, 0, 0);"&gt;สำหรับ EJB ไปเรียก EJB ด้วยกัน ใน EJB Project เดียวกันก็ต้อง Config Reference เหมือนกันนะครับ ถึงจะเห็น&lt;/li&gt;&lt;li style="color: rgb(255, 0, 0);"&gt;ทุกครั้งที่ Config พวกนี้ ถ้าเป็น EJB ต้อง Deploy ใหม่ทุกครับ สำหรับ Web Project ตั้อง Restart Application ทุกครั้ง&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-43601950762147118?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/43601950762147118/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=43601950762147118' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/43601950762147118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/43601950762147118'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/jndi-name-on-rad-60.html' title='วิธีการแก้ไขปัญหาเมื่อเราไม่เจอ JNDI Name On RAD 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_OyrxYulzYnY/R4bqO9jgTmI/AAAAAAAAA-I/_5PYRDCzHaQ/s72-c/JNDIName01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6819068248493600364</id><published>2008-01-09T13:46:00.000+08:00</published><updated>2008-01-09T15:35:15.003+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Bean'/><title type='text'>Step By Step Create Entity Bean By Rad 6.0</title><content type='html'>1. Create EJB Project ขึ้นมาก่อน&lt;br /&gt;2. สร้าง Map-Relationship โดยคลิกขวาที่ EJB Project เลือก EJB to RDB Mapping จะขึ้นหน้าต่างดังรูป&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/R4Rk-NjgThI/AAAAAAAAA9I/HGl0zXGoKdY/s1600-h/EntityBean01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/R4Rk-NjgThI/AAAAAAAAA9I/HGl0zXGoKdY/s320/EntityBean01.jpg" alt="" id="BLOGGER_PHOTO_ID_5153354893571935762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3. ทำการเลือก  Create a new backend folder (กรณีที่ยังไม่ได้ทำไว้น่ะครับ ถ้าทำไว้แล้วจะมีอยู่แล้ว) แล้ว กด Next&lt;br /&gt;4. เลือก Bottom-Up (ถ้าสร้างครั้งแรกก็มีให้เลือกอยู่อันเดียวอยู่แล้วครับ) แล้วกด Next&lt;br /&gt;5. จะขึ้นหน้าต่างดังภาพ (ซึ่งจะเป็นการ Config DB ครับ ข้างล่างผม Config ให้ใช้กับ Oracle น่ะครับ)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/R4RmVdjgTiI/AAAAAAAAA9Q/TYpJdaE_Z_4/s1600-h/EntityBean02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/R4RmVdjgTiI/AAAAAAAAA9Q/TYpJdaE_Z_4/s320/EntityBean02.jpg" alt="" id="BLOGGER_PHOTO_ID_5153356392515522082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6. หลังจากกด Next แล้ว จะให้เราเลือกว่าจะเอา Table ไหนบ้าง ก็เลือกที่เราต้องการได้เลยครับ แล้วกด Finish ได้เลย&lt;br /&gt;7. เสร็จแล้วก็ คลิกขวา Deploy EJB ก็จะใช้งานได้แล้วครับ&lt;br /&gt;8. วิธีเรียกก็เหมือนเรียก EJB ปกติครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;หมายเหตุ &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;1. บางทีเราอาจจะต้อง add JNDI - CMP Connection Factory Binding ครับ คือ เป็นการ Add Adtasource Reference เข้ากับที่ Server Config ไว้น่ะครับ (สร้างเป็น XA Datasource)&lt;br /&gt;2. ถ้าเราอยากเพิ่มให้ Add เป็น Model ได้ให้เพิ่ม create ที่รับเป็น Model ได้เลยครับ โดย&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li style="color: rgb(255, 0, 0);"&gt;เพิ่มที่ xxxLocalHome รับ Model ที่ต้องการ&lt;/li&gt;&lt;li style="color: rgb(255, 0, 0);"&gt;เพิ่มที่ xxxBean โดยต้องเพิ่มสองเมธอด คือ ejbCreate, ejbPostCreate&lt;/li&gt;&lt;li style="color: rgb(255, 0, 0);"&gt;เพิ่มการ set ค่าลงไปใน ejbCreate แต่ใน ejbPostCreate ไม่ต้องทำอะไรครับ&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6819068248493600364?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6819068248493600364/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6819068248493600364' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6819068248493600364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6819068248493600364'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/step-by-step-create-entity-bean-by-rad.html' title='Step By Step Create Entity Bean By Rad 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_OyrxYulzYnY/R4Rk-NjgThI/AAAAAAAAA9I/HGl0zXGoKdY/s72-c/EntityBean01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4602907272982075817</id><published>2008-01-09T12:26:00.000+08:00</published><updated>2008-01-09T13:06:26.382+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><title type='text'>EJB Life Cycle</title><content type='html'>จดไว้เตือนความจำครับ&lt;br /&gt;&lt;br /&gt;1. Statefull Session Bean&lt;br /&gt;&lt;ol&gt;&lt;li&gt;เมื่อไม่มี --&gt; create --&gt; SetSessionContext --&gt; ready --&gt; ejbRemove --&gt; Remove&lt;/li&gt;&lt;li&gt;เมื่อไม่ได้ใช้งานนานๆ --&gt; ejbPassivate จะใช้ก็ --&gt; ejbActivate&lt;/li&gt;&lt;/ol&gt;2. Stateless Session Bean&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ทุกครั้งจะ create --&gt; SetSessionContext --&gt; ejbRemove --&gt; Remove&lt;/li&gt;&lt;/ol&gt;3. Entity Bean&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ทำการ Set EntityContext --&gt; ลง Pool --&gt; create --&gt; ejbCreate --&gt; ejbPostCreate --&gt; ready&lt;/li&gt;&lt;li&gt;ถ้าไม่ได้ใช้เก็บลง Pool โดย ejbPassivate ถ้าจะใช้ก็ ejbActivate&lt;/li&gt;&lt;li&gt;เมื่อยกเลิกจะไป remove --&gt; ejbRemove --&gt; ลง Pool --&gt; unsetEntityContext&lt;/li&gt;&lt;/ol&gt;4. Message Driven Bean&lt;br /&gt;&lt;ol&gt;&lt;li&gt;เมื่อไม่มี setMessageDrivenContext --&gt; ready (onMessage) --&gt; ejbRemove&lt;/li&gt;&lt;/ol&gt;อันนี้คร่าวๆ ที่จริมีละเอียดกว่านี้ ต้องอ่านตาม Reference เอาครับ อันนี้ผมจดไว้จะเขียน Process เพื่อ Handle อ่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts9.html"&gt;- http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts9.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.leocrawford.org.uk/work/jcea/part1/ejbcontainer.html"&gt;- http://www.leocrawford.org.uk/work/jcea/part1/ejbcontainer.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4602907272982075817?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4602907272982075817/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4602907272982075817' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4602907272982075817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4602907272982075817'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/ejb-life-cycle.html' title='EJB Life Cycle'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7550664498851981768</id><published>2008-01-08T14:04:00.000+08:00</published><updated>2008-01-08T14:14:53.057+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>Config Hibernate ให้ใช้บน RAD 6.0 + Oracle แบบ EJB</title><content type='html'>วิธีนี้จะดีกว่าวิธีที่กลาวมก่อนแล้ว เพราะให้ EJB ควบคุม Transaction นะครับ เราไม่จำเป็นต้องเปิด ปิด มัน มันจะ ปิดให้เองโดย EJB ครับ ทำได้ดังนี้&lt;br /&gt;&lt;br /&gt;1. ต้องเปลี่ยนเป็นใช้ .getCurrentSession() แทน openSession() ครับ ตอนเราเรียก Session มาใช้งาน&lt;br /&gt;2. แก้ hibernate.cfg.xml เพื่อบอกมันว่าจะใช้ Transaction ซึ่งแต่ละ Server จะเรียกคนละชื่อกันครับ ต้องดูเอา (ผมเคยลอง Test MySQL กับ Websphere 6.0 แล้ว ใช้งานไม่ได้ครับ)&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;property name="hibernate.transaction.factory_class"&amp;gt;org.hibernate.transaction.JTATransactionFactory&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="hibernate.transaction.manager_lookup_class"&amp;gt;org.hibernate.transaction.WebSphereExtendedJTATransactionLookup&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;อันนี้เป็นของ Websphere Server 6.x นะครับ ถึงจะใช้งานได้&lt;br /&gt;&lt;br /&gt;3. แล้วเราก็จะใช้งานได้แล้ว&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;หมายเหตุ&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1. วิธีแบบนี้มีข้อเสียคือ ต้องทำผ่าน EJB เสมอไม่ว่าจะเป็น การ Select ค่าก็ตาม&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;2. ต้องพยายามทำบน EJB ตัวเดียวกัน เพราะ ถ้าทำคนละตัวอาจจะมีการเรียก Insert, Update ผิดพลาดได้&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7550664498851981768?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7550664498851981768/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7550664498851981768' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7550664498851981768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7550664498851981768'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/config-hibernate-rad-60-oracle-ejb.html' title='Config Hibernate ให้ใช้บน RAD 6.0 + Oracle แบบ EJB'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3422615574893228944</id><published>2008-01-08T12:38:00.000+08:00</published><updated>2008-01-08T14:04:20.571+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Config Hibernate ให้ใช้บน RAD 6.0 + Oracle แบบธรรมดา</title><content type='html'>อันนี้เป็นแบบธรรมดา ไม่ได้ใช้ Transaction ของ Websphere ในการควบคุม (แบบนี้สามารถไปใช้ บนEclipse ได้ด้วย และ Server ไหนก็ได้ครับ) และผมใช้ Datasource ด้วย&lt;br /&gt;1. สร้าง Project ขึ้นมาก่อน (Web Project + Ear Project)&lt;br /&gt;2. โหลด Hibernate &lt;a href="http://www.hibernate.org/"&gt;ที่นี่&lt;/a&gt; (ที่ผมใช้เป็น Hibernate 3.2 ครับ)&lt;br /&gt;3. Copy Library มาใส่ที่ Project ของเรา หรือจะทำการ Add Share Library ใน Ear Project ก็ได้&lt;br /&gt;4. ทำการ สร้าง HibernateUtil ขึ้นมาเพื่อเรียกใช้งาน (โดย Copy File จาก Tutorial มาใช้ได้เลยครับ)&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;private static final SessionFactory sessionFactory;&lt;br /&gt;&lt;br /&gt;static {&lt;br /&gt;try {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            // Create the SessionFactory from hibernate.cfg.xml&lt;/span&gt;&lt;br /&gt;sessionFactory = new Configuration().configure("WEB-INF/hibernate.cfg.xml").buildSessionFactory(); &lt;span style="font-weight: bold;"&gt;//อันนี้ผมอ้างที่อยู่ของ File Config ว่าอยู่ที่ไหน&lt;/span&gt;&lt;br /&gt;} catch (Throwable ex) {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            // Make sure you log the exception, as it might be swallowed&lt;/span&gt;&lt;br /&gt;System.err.println("Initial SessionFactory creation failed." + ex);&lt;br /&gt;throw new ExceptionInInitializerError(ex);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static SessionFactory getSessionFactory() {&lt;br /&gt;return sessionFactory;&lt;span style="font-weight: bold;"&gt;// ที่เราจะเอาไปใช้งาน&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;5. ต่อไปก็สร้าง hibernate.cfg.xml ซึ่งไว้สำหรับ Config ของ Hibernate&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;?xml version='1.0' encoding='utf-8'?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-configuration PUBLIC&lt;br /&gt;"-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hibernate-configuration&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;session-factory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Database connection settings --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="hibernate.connection.datasource"&amp;gt;jdbc/spag&amp;lt;/property&amp;gt; &lt;span style="font-weight: bold;"&gt;//Config Datasource ที่เราใช้งาน&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- JDBC connection pool (use the built-in) --&amp;gt;&lt;br /&gt;&amp;lt;property name="connection.pool_size"&amp;gt;1&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- SQL dialect --&amp;gt;&lt;br /&gt;&amp;lt;property name="dialect"&amp;gt;org.hibernate.dialect.Oracle9Dialect&amp;lt;/property&amp;gt; &lt;span style="font-weight: bold;"&gt;//เลือกเป็น Oracle 9i&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Enable Hibernate's automatic session context management --&amp;gt;&lt;br /&gt;&amp;lt;property name="current_session_context_class"&amp;gt;thread&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Disable the second-level cache  --&amp;gt;&lt;br /&gt;&amp;lt;property name="cache.provider_class"&amp;gt;org.hibernate.cache.NoCacheProvider&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Echo all executed SQL to stdout --&amp;gt;&lt;br /&gt;&amp;lt;property name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mapping resource="com/test/hibernate/model/GeneralParamM.hbm.xml"/&amp;gt; &lt;span style="font-weight: bold;"&gt;//Config Table ที่เราใช้งาน&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/session-factory&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/hibernate-configuration&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;6. ต่อไปเราสร้าง Config ของ Table โดยผมจะสร้างไว้ที่ com.test.hibernate.model ครับชื่อ ไฟล์ GeneralParamM.hbm.xml ซึ่งพวกนี้ผม Config ไว้ใน hibernate.cfg.xml ตามบรรทัดข้างล่างสุด&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE hibernate-mapping PUBLIC&lt;br /&gt;"-//Hibernate/Hibernate Mapping DTD 3.0//EN"&lt;br /&gt;"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hibernate-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;class name="com.test.hibernate.model.GeneralParamM" table="GENERAL_PARAM"&amp;gt;&lt;span style="font-weight: bold;"&gt; //บอกว่าใช้ Class ไหน Mapping กับ Table ไหน&lt;/span&gt;&lt;br /&gt;&amp;lt;id name="paramCode" column="PARAM_CODE"&amp;gt; &lt;span style="font-weight: bold;"&gt;//บอกว่าเป็น Primary Key&lt;/span&gt;&lt;br /&gt;   &amp;lt;generator class="assigned"/&amp;gt;&lt;span style="font-weight: bold;"&gt;//บอกว่าใช้แบบ Assign ค่าลงไปเอง&lt;/span&gt;&lt;br /&gt;&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;property name="paramValue" column="PARAM_VALUE"/&amp;gt;&lt;br /&gt;&amp;lt;property name="labelName" column="LABEL_NAME"/&amp;gt;&lt;br /&gt;&amp;lt;property name="editableFlag" column="EDITABLE_FLAG"/&amp;gt;&lt;br /&gt;&amp;lt;/class&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;7. พอสร้างทั้งหมดเสร็จแล้ว เราก็มาลองเรียกมันดูโดย&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;SessionFactory sessionFactory = HibernateUtil.getSessionFactory();&lt;br /&gt;Session sessionHibernate = sessionFactory.openSession(); &lt;span style="font-weight: bold;"&gt;//เปิด Session ไว้ใช้งาน&lt;/span&gt;&lt;br /&gt;Criteria criteria = sessionHibernate.createCriteria(GeneralParamM.class);&lt;br /&gt;criteria.add(Restrictions.eq("paramCode",&lt;paramcode&gt;)); &lt;span style="font-weight: bold;"&gt;//ใส่ค่าที่เราต้องการหา&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;List result = criteria.list();&lt;br /&gt;&lt;br /&gt;sessionFactory.close(); &lt;span style="font-weight: bold;"&gt;//ปิด Session จำเป็นต้องปิทุกครั้งนะครับ&lt;/span&gt;&lt;br /&gt;&lt;/paramcode&gt;&lt;/div&gt;&lt;br /&gt;8. พอสั่งรันเสร็จ มันก็จะดึงค่าจาก Table ขึ้นมาให้ครับ (ตรวจสอบ SystemOut.log ด้วยว่า Error หรือเปล่า) อันนี้เป็ฯแบบง่ายๆ นะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;หมายเหต&lt;/span&gt;ุ&lt;br /&gt;1. อาจจะมีปัญหาพอดึงค่าแล้วสั่งปิด ไปค่าที่ได้ไม่มาเกิด Exception นะครับ&lt;br /&gt;2. ถ้าใช้วิธีนี้จะต้องปิดทุกครั้งที่เลิกใช้งาน ไม่งั้น Session จะค้าง&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3422615574893228944?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3422615574893228944/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3422615574893228944' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3422615574893228944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3422615574893228944'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/config-hibernate-rad-60-oracle.html' title='Config Hibernate ให้ใช้บน RAD 6.0 + Oracle แบบธรรมดา'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3088002468933150358</id><published>2008-01-07T11:36:00.001+08:00</published><updated>2008-01-07T11:48:54.685+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Call Web Service'/><title type='text'>การเรียก Web Service ผ่าน Java ที่เราทำการ Generate แล้ว</title><content type='html'>วีธีในการเรียกนั้ เราสามารถที่จะเรียกผ่าน Proxy หรือ Locator ก็ได้ครับ ทำไ้ดัดังนี้&lt;br /&gt;&lt;br /&gt;1. วิธีการเรียกผ่าน Proxy ทำดังนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;xxxProxy proxy = xxxProxy();&lt;br /&gt;proxy.setEndpoint(endpoint); &lt;span style="color: rgb(255, 0, 0);"&gt;//ไว้สำหรับ Set URL ของ Web Service ที่เราจะไปเรียก&lt;/span&gt;&lt;br /&gt;proxy.process(); &lt;span style="color: rgb(255, 0, 0);"&gt;//เรียก Process ที่เราต้องการใช้ใน Web Service นั้น&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2. เรียกผ่าน Locator ดังนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;xxxLocator locator = new xxxLocator(); &lt;span style="color: rgb(255, 0, 0);"&gt;//เรียก Service Locator&lt;/span&gt;&lt;br /&gt;xxx service = locator.getxxx(new URL("endpoint")); &lt;span style="color: rgb(255, 0, 0);"&gt;//เรียก Service ที่เราใช้งาน คล้ายๆ Proxy แล้ว Set URL ที่เราต้องไปเรียก&lt;/span&gt;&lt;br /&gt;service.process(); &lt;span style="color: rgb(255, 0, 0);"&gt;// เรียก Process ที่เราต้องการใช้ใน Web Service นั้น&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3088002468933150358?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3088002468933150358/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3088002468933150358' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3088002468933150358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3088002468933150358'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/web-service-java-generate.html' title='การเรียก Web Service ผ่าน Java ที่เราทำการ Generate แล้ว'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4562370453288207245</id><published>2008-01-07T11:07:00.000+08:00</published><updated>2008-01-11T11:29:12.910+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Web  Service'/><title type='text'>Step By Step Generate Web Service Client By Eclipse 3.3</title><content type='html'>Step By Step Generate Web Service Client By Eclipse 3.3&lt;br /&gt;เป็นวิธีการสร้าง Web Service Client ไปเรียก Web Service ในกรณีที่เรามี WSDL File อยู่แล้วนะครับ&lt;br /&gt;&lt;br /&gt;1. ขั้นแรกโหลด Eclipse 3.3 มาก่อนโหลด &lt;a href="http://www.eclipse.org/downloads/"&gt;ที่นี่&lt;/a&gt; โหลดที่เป็นสำหรับ Java EE Developers&lt;br /&gt;&lt;ul&gt;&lt;li&gt; สำหรับ Eclipse 3.3 จะต้องมี JRE 1.5 ขึ้นไปครับ ต้องโหลดมาลงด้วย&lt;/li&gt;&lt;/ul&gt;2. ต่อไปเรามาสร้าง Project กัน โดยผมจะสร้างเป็น Java Project โดยคลิกขวาเลือก New --&gt; Project ดังรูป&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/R4GX_9jgTcI/AAAAAAAAA8g/zZnBlNkRJts/s1600-h/E01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/R4GX_9jgTcI/AAAAAAAAA8g/zZnBlNkRJts/s320/E01.jpg" alt="" id="BLOGGER_PHOTO_ID_5152566573799591362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3.  เลือก Folder ที่เป็น Java จากนั้นเลือก Java Project คลิก Next จะได้หน้าต่างดังรูป&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_OyrxYulzYnY/R4GZItjgTdI/AAAAAAAAA8o/3byGZxWP_pM/s1600-h/E02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_OyrxYulzYnY/R4GZItjgTdI/AAAAAAAAA8o/3byGZxWP_pM/s320/E02.jpg" alt="" id="BLOGGER_PHOTO_ID_5152567823635074514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. จากนั้นก็พิมพ์ชื่อ Project Name ลงไป (ตรวจสอบตรงช่อง JRE ว่ามี JRE หรือเปล่า ถ้าไม่มีให้ไป คลิกที่ Configuration Default) โดย&lt;br /&gt;&lt;ol&gt;&lt;li&gt;เมื่อกดเข้าไปแล้ว จะได้ดังรูป&lt;/li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/R4GaLNjgTeI/AAAAAAAAA8w/B3sOrY8CZb4/s1600-h/E02_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/R4GaLNjgTeI/AAAAAAAAA8w/B3sOrY8CZb4/s320/E02_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5152568966096375266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;ให้ทำการ Add JRE ตรงปุ่ม Add ด้านขวามือ แล้วไปหา Folder ที่เรา Install JRE ไว้ (โดยปกติจะอยู่ที่ Program Files/Java ครับ)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;เมื่อ Add แล้วให้ติกเครื่องหมายถูก ก็จะได้ JRE เป็น Default ของ Eclipse แล้ว&lt;/li&gt;&lt;/ol&gt;5. หลังจากคลิก FInish แล้วจะได้ Java Project มา แล้วเราก็เอา WSDL File มาวางไว้ที่ Project&lt;br /&gt;6. คลิก ขวาที่ WSDL File เลือก Web Services --&gt; Generate Client ดังรูป&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_OyrxYulzYnY/R4Gb59jgTfI/AAAAAAAAA84/AfXFbZ_9_IE/s1600-h/E03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_OyrxYulzYnY/R4Gb59jgTfI/AAAAAAAAA84/AfXFbZ_9_IE/s320/E03.jpg" alt="" id="BLOGGER_PHOTO_ID_5152570868766887410" border="0" /&gt;&lt;/a&gt;ึ&lt;br /&gt;7. เมื่อเลือกแล้ว จะขึ้นหน้าต่างดังรูป (ควรตรวจสอบ Web Service Runtime ให้เป็น Apache Axis กับ Client Project เป็น Java Project ที่เราสร้างไว้ และ Client Type เป็น Java Proxy)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_OyrxYulzYnY/R4GdWdjgTgI/AAAAAAAAA9A/KH2Y7epZJac/s1600-h/E04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_OyrxYulzYnY/R4GdWdjgTgI/AAAAAAAAA9A/KH2Y7epZJac/s320/E04.jpg" alt="" id="BLOGGER_PHOTO_ID_5152572457904786946" border="0" /&gt;&lt;/a&gt;8. คลิก Finish ได้เลย เราจะได้ Web Service Client มาไว้ใช้งานแล้ว&lt;br /&gt;9. Entry ต่อไปจะเขียนวิธีการเรียกโดยใช้ File พวกนี้ครับ ดู &lt;a href="http://yashima.blogspot.com/2008/01/web-service-java-generate.html"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;หมายเหต&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ุ สำหรับจะเอาไปใช้กับ Java Editor ตัวอื่นให้ Copy เฉพาะ Java File ไปใช้ ก็จะใช้งานได้เลยครับเช่น บน RAD 6.0 ก็ Copy ไปใช้งานได้เลย (แ่ต่เอามา Generate Sample JSP ไม่ได้ครับ ต้องใช้ของ RAD เอง ถึงจทำได้ครับ)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4562370453288207245?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4562370453288207245/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4562370453288207245' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4562370453288207245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4562370453288207245'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2008/01/step-by-step-generate-web-service.html' title='Step By Step Generate Web Service Client By Eclipse 3.3'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_OyrxYulzYnY/R4GX_9jgTcI/AAAAAAAAA8g/zZnBlNkRJts/s72-c/E01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3773670413825346980</id><published>2007-12-20T17:10:00.000+08:00</published><updated>2007-12-20T17:17:26.293+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><title type='text'>Basic Config Log4J without properties File</title><content type='html'>การ Config แบบที่ไม่ใช้ properties File เราจะใช้ Class Properties ในการ Set แทนนน่ะครับ โดยเราจะ Config เหมือน Properties File เลยครับ คือ ถ้าอยู่ทางขวาของ "=" จะเป็น Key ส่วนทางซ้ายเป็น Value ครับ ข้างล่างเป็นตัวอย่างประมาณนี้น่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="font-weight: bold;"&gt;Example&lt;/span&gt;&lt;br /&gt;Properties properties = new Properties();&lt;br /&gt;properties.put("log4j.logger.test","DEBUG,test");&lt;br /&gt;properties.put("log4j.appender.test","org.apache.log4j.DailyRollingFileAppender");&lt;br /&gt;properties.put("log4j.appender.test.DatePattern","'.'yyyy_MM_dd");&lt;br /&gt;properties.put("log4j.appender.test.File","C:/TEMP/a.log");&lt;br /&gt;properties.put("log4j.appender.test.layout","org.apache.log4j.PatternLayout");&lt;br /&gt;properties.put("log4j.appender.test.layout.ConversionPattern","[Test] [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n");&lt;br /&gt;PropertyConfigurator.configure(properties);&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3773670413825346980?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3773670413825346980/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3773670413825346980' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3773670413825346980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3773670413825346980'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/12/basic-config-log4j-without-properties.html' title='Basic Config Log4J without properties File'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2415796381431660280</id><published>2007-12-19T17:38:00.000+08:00</published><updated>2008-01-03T15:23:57.856+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problem Java'/><category scheme='http://www.blogger.com/atom/ns#' term='newbie'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Application'/><title type='text'>ปัญหาที่พบบ่อยสำหรับนักพัฒนา Java Web Application ในประเทศไทยครับ ที่ควรแก้ไข</title><content type='html'>อันนี้เป็นปัญหาที่ผมเจอกับเพื่อนร่วมงานด้วยกันที่ ควรจะแก้ไขครับ ถ้าคุณทำงานมาเป็นปีแล้วไม่ได้ใช้ หรือว่าไม่ได้ทำก็ควรจะทำนะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q : &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ยังมีการใช้ System.out.println อยู่&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;สำหรับเด็กจบใหม่ผมไม่คิดอะไรหรอกครับที่เขาจะใช้เพราะยังไม่รู้ ตอนผมจบใหม่ผมก็เป็น ตอนหลังถึงมาเรียนรู้ว่าไม่ควรจะใช้ System.out.println แล้ว ควรจะใช้ Log4J (&lt;a href="http://www.blogger.com/%C3%A0%C2%B9%C2%89http://yashima.blogspot.com/2007/06/basic-config-log4j.html"&gt;พื้นฐานการ Config อ่านได้ที่นี่ครับ&lt;/a&gt;) มาใช้ ซึ่งจริงๆ แล้วที่เราใช้ Log4J ก็เพราะว่าเราสามารถที่จะควบคุมพวก ข้อมูลที่ต้องการโชว์ได้ ว่าอยู่ระดับใด(info, debug, warn, fatal) สามารถแยกเกบเป็นไฟลล์ต่างๆ ได้ง่าย ถ้าเราใช้ System.out.println มันจะไม่ได้น่ะครับ (ที่จริงมันก็พอได้โดยเอา Log4J ไปคุมอีกทีแต่ก็ไม่ควรครับ) แล้วก็วิธีใช้ง่ายๆ ก็อย่าไปแยก Log เป็น Class Utitility เลยครับ ควรคุมง่าย แต่ดูยากไม่รู้ว่าอยู่บรรทัดไหน Class ไหนที่ทำงานอยู่ ให้ทำแบบนี้&lt;br /&gt;private Logger log = Logger.getLogger(xxxx.class);&lt;br /&gt;ไว้ที่ Class ที่เราทำงานเลยครับ แล้วก็ใช้ log.xxx(""); เอาจะดีกว่า&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q : &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ใช้ Google ไม่เป็น&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;ผมคิดว่าแบบนี้ไม่น่าจะมีแล้วนะครับ คือจะหาอะไรก็พิมพ์คำนั้นลงไปเลย (ถ้าไม่รู้ภาษาอังกฤษ ก็พิมพ์ไทยลงไปเลยครับ ผมคิดว่าปัญหาบางอย่างอาจจะหาภาษาไทยได้เลย แต่ถ้าไทยอาจจะต้องพิมพ์เป็นคำๆ แล้วเว้นวรรค ถึงจะหาเจอ) แล้วก็เพิ่มพวกภาษาที่เราใช้ไปด้วยก็จะแคบเข้า เช่น ถ้าเราเขียน Java ตอนจะต้นอะไรก็ติดคำว่า Java ลงไปด้วยก็น่าจะหาเจอนะครับ หรืออย่างถ้าเราใช้ Tomcat Server เราก็พ่วงคำนี้ลงไปด้วย ถ้ามีปัญหาบน Server น่ะครับ น่าจะช่วยให้หาเจอได้ง่ายขึ้นมาก หรือ ถ้าเราอยากรู้ว่า มันคืออะไรก็พิมพ์เลยครับ เช่น JMS คือ แบบนี้ก็หาเจอความหมายที่เป็นภาษาไทยเลยง่ายในการอ่านด้วย&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q : &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;อ่าน Log (SystemOut.log) ไม่เป็น&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;วิธีการอ่านแบบนี้ เราจะต้องมีวิธีการเขียน Log ที่โชว์ให้ดีๆ ด้วยครับ คือพยายาม Log ว่าเราเข้า Class ไหน, Method ไหน ตลอด ค่าไหนเราแค่เช็คของเรา ก็ใช้ Log.debug เอา แล้วให้โชว์ออกมา (ถ้าใช้ Log4J จะช่วยได้เยอะ เพราะเราจะรู้ว่าตอนนี้ทำอยู่บรรทัดไหน Class ไหน, Method ไหน เลยน่ะครับ ขึ้นอยู่กับ Config ของ Log4J) และอีกอย่างพวก Exception น่ะครับ ก็หัดใช้ e.printStackTrace() ไว้ด้วยตอน ดัก try, catch น่ะครับ จะได้รู้ว่าบรรทัดไหน วิธีการไล่พวกนี้ก็ไม่ยากแค่ดูว่า Exception ที่อยู่ใน Package ของเราอยู่ตรงไหนแล้วก็ไปไล่โค้ดไปเรื่อยๆ ก็จะเจอที่ผิดของเราเองน่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q : &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ไม่ยอมเช็ค Null ไว้&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;อันนี้ผมก็เป็นบ่อยชอบลืม เช็ค Null ทุกครั้ง ที่จะใช้ตัวแปรนั้นน่ะครับ เดี๋ยวจะเกิดปัญหา NullPointerException น่ะครับ พยายามตรวจดูว่าจะ ตัวแปรตัวไหนให้เช็คก่อนที่จะใช้งานตัวแปรตัวนั้น&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q :&lt;/span&gt; ไม่รู้จะเขียน Log ให้แสดงตรงไหนบ้าง&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A :&lt;/span&gt; วิธีการเขียนง่ายๆ นะครับ ก็เข้า Method ไหน Log แสดงว่าเข้า Method นั้น แลวก็แสดงค่าทุกค่าที่ใช้ใน  Method นั้น อันนี้แบบง่ายๆ (พวกแสดงค่าต่างๆ ก็ืำเป็น log.debug เอาแล้ว ครอบด้วย if log.isdebugEnable() ไว้ พอเวลาไม่ต้องการให้แสดงก็ไป Config ไว้ที่ Log4J) สำหรับที่สำคัญๆ ที่ควรมีถ้าขี้เกียจ ก็ Log บอกว่าเข้า Method ไหน แล้วก็ค่าที่ลง Database ว่าลงเป็นอะไร แล้วก็ใช้ SQL อะไรครับ จะได้รู้ว่าผิดที่ Database หรือว่าโปรแกรมที่เราเขียน&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q :&lt;/span&gt; เขียน Program พวกค่าต่างๆ ไว้ใน Code เลย&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A :&lt;/span&gt; พวกค่าต่างที่คิดว่าเป็นค่าที่เราต้อง Config ไว้ ควรเอาไปเก็บไว้ใน General Parameter สักที่นึงที่สามารถแก้ไขได้โดยเราไม่ต้องมานั่ง Deploy Application ใหม่ เช่น ใน Database หรือ Properties Files ตัวอย่างค่าที่เราควรไว้ข้างนอก เช่น URL ที่เราต้องติดต่อกับ External System อื่นๆ, ค่าำคงที่ที่เราต้องส่งไปให้กับ External System เป็นต้น&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2415796381431660280?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2415796381431660280/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2415796381431660280' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2415796381431660280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2415796381431660280'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/12/java-web-application.html' title='ปัญหาที่พบบ่อยสำหรับนักพัฒนา Java Web Application ในประเทศไทยครับ ที่ควรแก้ไข'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2946830536868247482</id><published>2007-11-09T15:02:00.000+08:00</published><updated>2008-01-23T18:03:27.674+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Datasource'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>การเรียก Datasource ของ Websphere จาก Java Application</title><content type='html'>วิธีการเรียกที่ผมเห็นทำได้ 2 แบบน่ะครับ แต่มีแบบนึงไม่แน่ใจว่าเป็นปัญหาของ Websphere หรือเปล่า&lt;br /&gt;ที่ผมลองลองกับ Websphere 6.0, Websphere 6.1 ครับ &lt;span style="color: rgb(255, 0, 0);"&gt;ควรจะทำบน RAD นะครับ ถึงจะรันได้&lt;/span&gt;&lt;br /&gt;1. เรียกโดยใช้ Library ของ Websphere เลยซึ่งวิธีนี้จะอ้าง JNDI Name ได้ตรงๆ เลยครับ&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Hashtable env = new Hashtable();&lt;br /&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere .naming.WsnInitialContextFactory");&lt;span style="color: rgb(255, 0, 0);"&gt; // เป็นตัวที่เราใช้ในการเรียก Context ซึ่ง Library จะอยู่ที่ lib ใน RAD น่ะครับ &lt;/span&gt;&lt;br /&gt;env.put(Context.PROVIDER_URL, "iiop://localhost:2809/");&lt;span style="color: rgb(255, 0, 0);"&gt;// IP Address ของ JNDI Name ตัวที่เราเรียก ซึ่งเราสามารถดู Port ได้ที่ Servers --&gt; Application Server แล้วเลือก Server ที่เรามี JDBC อยู่ เสร็จแล้วดู Port (Communications) ว่า BOOTSTRAP_ADDRESS เป็นอันไหนก็ใช้อันนั้นครับ&lt;/span&gt;&lt;br /&gt;InitialContext ctx = new InitialContext(env);&lt;br /&gt;DataSource ds = (DataSource) ctx.lookup("jdbc/test");&lt;span style="color: rgb(255, 0, 0);"&gt;//ชื่อ JNDI Name ที่เราใช้เรียกครับ&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2. จะคล้ายวิธีแรกแต่เราใช้ Context มาตรฐานของ Sun เลย (วิธีนี้ผมลองเรียกแล้วมันได้ค่าเป็น NULL น่ะครับ ม่รู้เพราะอะไรเหมือนกัน)&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Hashtable env = new Hashtable();&lt;br /&gt;env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi .cosnaming.CNCtxFactory");&lt;span style="color: rgb(255, 0, 0);"&gt; // เป็นตัวที่เราใช้ในการเรียก Context ซึ่งจะเป็นของ Sun เลย&lt;/span&gt;&lt;br /&gt;env.put(Context.PROVIDER_URL, "iiop://localhost:2809/");&lt;span style="color: rgb(255, 0, 0);"&gt;// IP Address ของ JNDI Name ตัวที่เราเรียก ซึ่งเราสามารถดู Port ได้ที่ Servers --&gt; Application Server แล้วเลือก Server ที่เรามี JDBC อยู่ เสร็จแล้วดู Port (Communications) ว่า BOOTSTRAP_ADDRESS เป็นอันไหนก็ใช้อันนั้นครับ&lt;/span&gt;&lt;br /&gt;InitialContext ctx = new InitialContext(env);&lt;br /&gt;DataSource ds = (DataSource) ctx.lookup("cell/nodes/Node01/servers/server1/jdbc/test"); &lt;span style="color: rgb(255, 0, 0);"&gt;//ชื่อที่ใช้เรียกจะต่างกับเรียกโดยใช้ของ  Websphere โดยเราจะต้องทำการใส่ &lt;span style="font-weight: bold;"&gt;cell/nodes/&lt;ชื่อ Node&gt;/servers/&lt;ชื่อ Server&gt;/&lt;jndi&gt;&lt;/jndi&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;ปล.&lt;br /&gt;1. ต้องใช้ JRE On Websphere กับ Websphere Runtime ด้วยน่ะครับ&lt;br /&gt;2. ถ้าไปเรียกที่ Server อาจจะต้องดูว่า Server เปิดให้เรียกใช้หรือเปล่าน่ะครับ แต่ถ้าเทสเครื่องตัวเองคืดว่าไม่น่าจะมีปัญหาอะไรครับ&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://www.webservertalk.com/archive80-2006-4-1481822.html"&gt;http://www.webservertalk.com/archive80-2006-4-1481822.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2946830536868247482?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2946830536868247482/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2946830536868247482' title='4 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2946830536868247482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2946830536868247482'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/11/datasource-websphere-java-application.html' title='การเรียก Datasource ของ Websphere จาก Java Application'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7933927379521330921</id><published>2007-11-09T15:01:00.000+08:00</published><updated>2007-11-09T15:01:26.741+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Dom4j'/><title type='text'>วิธีการดึงข้อมูลจาก XML อย่างง่ายโดยใช้ Dom4J</title><content type='html'>เวบของ&lt;a href="http://www.dom4j.org/"&gt; DOM4J&lt;/a&gt; (&lt;a href="http://yashima.blogspot.com/2007/08/xml-dom4j.html"&gt;Entry วิธีการสร้าง XML อย่างง่ายโดยใช้ Dom4J&lt;/a&gt;)&lt;br /&gt;จากข้อมูลข้างล่าง เราจะมาแกะ ข้อมูลออกกันว่าจะแกะด้อย่างไรบ้างนะครับ&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"&amp;gt;&lt;br /&gt;&amp;lt;Header&amp;gt;&lt;br /&gt;&amp;lt;Parameter1&amp;gt;&amp;lt;/Parameter1&amp;gt;&lt;br /&gt;&amp;lt;Parameter2&amp;gt;123456&amp;lt;/Parameter2&amp;gt;&lt;br /&gt;&amp;lt;Parameter3 total="3"/&amp;gt;&lt;br /&gt;&amp;lt;Parameter4&amp;gt;&lt;br /&gt; &amp;lt;SubParameter&amp;gt;Sub&amp;lt;/SubParameter&amp;gt;&lt;br /&gt;&amp;lt;/Parameter4&amp;gt;&lt;br /&gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ซึ่งในที่นี้จะสอนวิธีแกะออกมาโดยใช้ DOM4J นะครับ&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;Document document = DocumentHelper.parseText(xmlResult);&lt;span style="color: rgb(255, 0, 0);"&gt;//Parser String ที่เป็น XML ให้เป็น Document เพื่อที่เราจะได้ดึงข้อมูลได้&lt;/span&gt;&lt;br /&gt;Element rootElement = document.getRootElement();&lt;span style="color: rgb(255, 0, 0);"&gt;// get Element ออกมาเพื่อจะดึงค่าข้างในมันออกมา&lt;/span&gt;&lt;br /&gt;System.out.println("Parameter2 : " + rootElement.elementText("Parameter2"));&lt;span style="color: rgb(255, 0, 0);"&gt; //เป็นการดึงค่าที่อยู่ใน Parameter2 ออกมาแสดง (ดึงได้เฉพาะ String ถ้าข้างในเป็น Element จะดึงออกมาไม่ได้)&lt;/span&gt;&lt;br /&gt;System.out.println("Parameter3 : " + rootElement.element("Parameter3").attributeValue("total"));&lt;span style="color: rgb(255, 0, 0);"&gt; //ดึงค่าของ total ที่อยู่ใน Parameter3&lt;/span&gt;&lt;br /&gt;Element elementParameter4 = rootElement.element("Parameter4");&lt;span style="color: rgb(255, 0, 0);"&gt; //ดึง Element ที่อยู่ใน Parameter4&lt;/span&gt;&lt;br /&gt;System.out.println("Parameter4 : " + elementParameter4.elementText("SubParameter"));&lt;span style="color: rgb(255, 0, 0);"&gt; //ดึงค่าเหมือนก่อนหน้านี้ทุกประการ&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7933927379521330921?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7933927379521330921/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7933927379521330921' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7933927379521330921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7933927379521330921'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/10/xml-dom4j.html' title='วิธีการดึงข้อมูลจาก XML อย่างง่ายโดยใช้ Dom4J'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-171798219671948854</id><published>2007-10-25T15:37:00.000+08:00</published><updated>2007-10-25T15:37:59.711+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Deploy EJB'/><title type='text'>วิธีแก้ปัญหาเวลา Deploy EJB ไม่ได้ใน RAD 6.0</title><content type='html'>โดยปกติเราจะคลิกขวาแล้ว Deploy EJB เพื่อจะให้มัน Generate Stub เพื่อใช้ในการเรียก EJB นั้นๆ ในบางทีกรณีที่ทำหลายคนแล้ว Sync มาเราจะไม่สามารถ Deploy EJB ได้ครับ เลยต้องใช้วิธีทำจาก Command Prompt แทนโดย ไปที Directory ที่เรา install RAD 6.0 ไว้ แล้วจะอยู่ที่ &lt;span style="font-weight: bold;"&gt;IBM\Rational\SDP\6.0\runtimes\base_v6\bin\ แล้ว File ชื่อ ejbDeploy.bat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;โดยใช้คำสั่งดังนี้&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;ejbdeploy inputEarFile Directory OutEar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example&lt;/span&gt;&lt;br /&gt;ejbDeploy test.ear c:\Temp testTemp.ear&lt;br /&gt;พอทำเสร็จมันก็จะ Generate Folder Workspace ไว้ให้แล้วเราก็ Copy File ใน EJB Project มาทับของเดิมที่มีอยู่แล้ว Generate ใหม่ก็จะทำงานได้แล้วครับ&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-171798219671948854?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/171798219671948854/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=171798219671948854' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/171798219671948854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/171798219671948854'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/10/deploy-ejb-rad-60.html' title='วิธีแก้ปัญหาเวลา Deploy EJB ไม่ได้ใน RAD 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-837964830309908462</id><published>2007-10-17T14:49:00.000+08:00</published><updated>2007-10-17T14:49:54.162+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Dom4j'/><title type='text'>วิธีการสร้าง XML อย่างง่ายโดยใช้ Dom4J</title><content type='html'>เวบของ&lt;a href="http://www.dom4j.org/"&gt; DOM4J&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;Document vDocument = DocumentHelper.createDocument(); &lt;span style="color: rgb(255, 0, 0);"&gt;//ไว้สำหรับสร้าง Document XML&lt;/span&gt;&lt;br /&gt;Element rootElement = vDocument.addElement("Header"); &lt;span style="color: rgb(255, 0, 0);"&gt;// สร้างส่วนหัวของ XML&lt;br /&gt;&lt;/span&gt;rootElement.addElement("Parameter1"); &lt;span style="color: rgb(255, 0, 0);"&gt;// สร้าง Element ข้างในแบบไม่มีค่าใน Element&lt;br /&gt;&lt;/span&gt;rootElement.addElement("Parameter2").addText("123456"); &lt;span style="color: rgb(255, 0, 0);"&gt;//สร้าง Element ข้างในแบบมีค่าใน &lt;/span&gt;Elementซึ่งค่าห้ามเป็น NULL&lt;br /&gt;rootElement.addElement("Parameter3").addAttribute("total","3"); &lt;span style="color: rgb(255, 0, 0);"&gt;// สร้าง Element แบบมี Attribute&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Element subElement = rootElement.addElement("Parameter4");&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//สร้าง Sub Element ข้างใน&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;subElement.addElement("SubParameter").addText("Sub");&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;จะได้ข้อมูล ตามข้างล่าง&lt;br /&gt;&lt;/strong&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"&amp;gt;&lt;br /&gt;&amp;lt;Header&amp;gt;&lt;br /&gt;&amp;lt;Parameter1&amp;gt;&amp;lt;/Parameter1&amp;gt;&lt;br /&gt;&amp;lt;Parameter2&amp;gt;123456&amp;lt;/Parameter2&amp;gt;&lt;br /&gt;&amp;lt;Parameter3 total="3"/&amp;gt;&lt;br /&gt;&amp;lt;Parameter4&amp;gt;&lt;br /&gt;        &amp;lt;SubParameter&amp;gt;Sub&amp;lt;/SubParameter&amp;gt;&lt;br /&gt;&amp;lt;/Parameter4&amp;gt;&lt;br /&gt;&amp;lt;/Header&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-837964830309908462?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/837964830309908462/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=837964830309908462' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/837964830309908462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/837964830309908462'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/08/xml-dom4j.html' title='วิธีการสร้าง XML อย่างง่ายโดยใช้ Dom4J'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3906648676678974954</id><published>2007-10-16T16:19:00.000+08:00</published><updated>2008-01-07T15:36:13.112+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TImeout'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><title type='text'>การ Set Connection Timeout ใน Web Service</title><content type='html'>การ Set Timeout เราสามารถที่จะ Config ไดสองที่ใน Axis คือ&lt;br /&gt;org.apache.axis.client.Stub กับ org.apache.axis.client.Call เป็น SetTimeout&lt;br /&gt;ถ้าเราไปใช้ Call RPC ตรงๆ จะไม่มี Config นะครับ ต้องทำแบบนี้แทน ถึงจะได้น่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;org.apache.axis.client.Call call = new org.apache.axis.client.Call(service);&lt;br /&gt;call.setTimeout(&lt;span style="color: rgb(255, 0, 0);"&gt;timeOutWS&lt;/span&gt;);//Time Out Web Service เวลาเป็น หน่วย ms ครับ&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;สำหรับการ Set TimeOut ใน Websphere 6.xxx&lt;/span&gt; นั้น เราจะทำที่ Class ที่ลงท้ายด้วย stub แล้วไป Config ที่ Method Invoke (Class com.ibm.ws.webservices.engine.MessageContext) ครับ มันจะมี .setTimeOut (บน Rad 6.0 มันเป็นการ Set Read TimeOut น่ะครับ ต้องไปให้ Eclipse Generate แทน แล้วไป Config ที่ call แทนครับ ตามข้างบน)ได้เลยครับ ซึง Set เป็น ms ครับ &lt;span style="color: rgb(255, 0, 0);"&gt;แต่ให้จำไว้ว่า ถ้าเราทำการ Rebuild ใหม่ ข้อมูลพวกนี้จะหายเราต้องกลัมา Config ใหม่&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3906648676678974954?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3906648676678974954/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3906648676678974954' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3906648676678974954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3906648676678974954'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/10/set-connection-timeout-web-service.html' title='การ Set Connection Timeout ใน Web Service'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2429708270568499418</id><published>2007-10-04T16:13:00.000+08:00</published><updated>2008-01-03T15:26:34.786+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Socket'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='TImeout'/><title type='text'>การ Set Connection Timeout ใน Socket</title><content type='html'>มันจะมีสองตัวให้ Config น่ะครับ เป็น soTimeout ของ Socket อันนี้คือระยะเวลา Ideal ของ Socket ถ้าเกินก็จะ Timeout ออกไปต้อง Connect ใหม่ กับ ตอน socket.connect (InetSocketAddress, Timeout) อันนี้จะเป็น Timeout ของการรอตอบกลับค่าจาก External System ที่เราไปเรียก ซึ่ง ตามตัวอย่างข้างล่าง&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;span style="font-weight: bold;"&gt;Example&lt;/span&gt;&lt;br /&gt;InetSocketAddress socketAddr = new InetSocketAddress(&lt;span style="color: rgb(255, 0, 0);"&gt;url&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 0);"&gt;port&lt;/span&gt;);&lt;br /&gt;Socket socket = new Socket();&lt;br /&gt;socket.connect(&lt;span style="color: rgb(255, 0, 0);"&gt;socketAddr&lt;/span&gt;,&lt;span style="color: rgb(255, 0, 0);"&gt;readTimeout&lt;/span&gt;);&lt;br /&gt;socket.setSoTimeout(&lt;span style="color: rgb(255, 0, 0);"&gt;idealTimeout&lt;/span&gt;);&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2429708270568499418?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2429708270568499418/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2429708270568499418' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2429708270568499418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2429708270568499418'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/10/set-connection-timeout-socket.html' title='การ Set Connection Timeout ใน Socket'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2885007534097654684</id><published>2007-10-02T11:22:00.001+08:00</published><updated>2007-10-02T11:22:52.101+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-12705'/><title type='text'>ปัญหา ORA-12705 บน Websphere</title><content type='html'>ปัญหาของการ Config Datasource แล้วไม่สามารถ Test Connection ได้ แล้วเกิด Error ORA-12705 ขึ้นน่ะครับ เกิดจากเรา Config Language ของเครื่องไม่ตรงกับ NLS_LANG ของ Oracle Client ของเครื่องเราเอง พอ Config เสร็จก็ Test Connection ใหม่ก็จะใช้งานได้แล้วครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;วิธี Config Language ของเครื่อง&lt;/span&gt;&lt;br /&gt;1. ไปที่ Control Panel --&gt; Regional and Language Options&lt;br /&gt;2. ที่ Tab Regional Options แล้วเลือกทั้งสองอันเป็นภาษาของเราเอง (Thai หรือ English ก็ได้) บางทีมันเป็นภาษา เช่น tar เป็นต้น Oracle ไม่รู้จักเลย Connect ไม่ได้&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.dba-oracle.com/t_ora_12705_resolution.htm"&gt;&lt;span style="font-weight: bold;"&gt;http://www.dba-oracle.com/t_ora_12705_resolution.htm&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2885007534097654684?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2885007534097654684/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2885007534097654684' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2885007534097654684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2885007534097654684'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/10/ora-12705-websphere.html' title='ปัญหา ORA-12705 บน Websphere'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4903640754544268171</id><published>2007-09-26T12:18:00.000+08:00</published><updated>2007-09-26T12:18:13.022+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Store Procedure'/><title type='text'>วิธีเรียก Store Procedure จาก Java</title><content type='html'>วิธีการเรียกเราจะใช้ CallableStatement จากการเรียก Connection.prepareCall(คำสั่ง Store Procedure)&lt;br /&gt;ซึ่งคำสั่งที่ใช้เรียกเป็นตามนี้ครับ&lt;br /&gt;1. ถ้าไม่มี Return ค่า&lt;span style="color: rgb(255, 0, 0);"&gt; { call PackageName.FunctionName(?,?,?) }&lt;/span&gt;&lt;br /&gt;2. ถ้ามี Return ค่า ใช้        &lt;span style="color: rgb(255, 0, 0);"&gt;{? = call PackageName.FunctionName(?)  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;แล้ว Set ค่า Parameter ตามปกติได้เลยครับ&lt;br /&gt;ถ้ามีการ Return เช่น cursor ให้ Set ค่าตัวแรกเป็น&lt;br /&gt;stmt.registerOutParameter(1, OracleTypes.CURSOR);&lt;br /&gt;ครับ ถ้าเป็นตัวเลขอไรก็ลองเซ็ตดูได้เป็นตัว 1,2,3 อ่ะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4903640754544268171?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4903640754544268171/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4903640754544268171' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4903640754544268171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4903640754544268171'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/09/store-procedure-java.html' title='วิธีเรียก Store Procedure จาก Java'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7494634747707279370</id><published>2007-09-13T18:30:00.000+08:00</published><updated>2007-09-13T18:30:54.269+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA LDAP'/><title type='text'>วิธีการเขียนข้อมูลเรียก LDAP</title><content type='html'>&lt;div align="left"&gt;สำหรับคนที่ไม่รู้ว่า LDAP คืออะไร สามารถอ่านได้&lt;a href="http://www2.cs.science.cmu.ac.th/seminar/2546/LDAP/LDAP.HTM" target="_blank"&gt;ที่นี่&lt;/a&gt;&lt;/div&gt;&lt;div align="left"&gt;1. ให้ใช้วิธีเรียกจากบน UNIX ด้วยคำสั่ง&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;ldapsearch -D cn=[username]&lt;br /&gt;-w [password] -h [ip address] -p [port] -s sub -b [service],o=[organization],c=[country]&lt;br /&gt;'objectClass=*'&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;Username&lt;/strong&gt; = ชื่อสำหรับทำการเข้า LDAP&lt;br /&gt;&lt;strong&gt;Password&lt;/strong&gt; = Password สำหรับเข้า LDAP&lt;br /&gt;&lt;strong&gt;IP Address&lt;/strong&gt; = IP สำหรับเข้า LDAP&lt;br /&gt;&lt;strong&gt;Port&lt;/strong&gt; = Port ของ LDAP&lt;br /&gt;&lt;strong&gt;Service&lt;/strong&gt; = ที่เราจะเข้าไปดูซึ่งวิธีเข้าไปดูนั้นจะเรียงจากชั้นในสุดไปถึงชั้นนอกสุด&lt;br /&gt;&lt;strong&gt;Organization&lt;/strong&gt; = Config LDAP&lt;br /&gt;&lt;strong&gt;Country&lt;/strong&gt; = Config LDAP&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br /&gt;ldapsearch -D cn=sample -w sample1 -h xxx.xxx.xxx.xxx -p xxx -s sub -b taoService=prepaid,serviceName=subProfile,msisdn=xxxxxxxxx, domainName=msisdn, o=xxx,c=TH 'objectClass=*'&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_OyrxYulzYnY/Rjr6ARObpWI/AAAAAAAAAcM/3wh_vRfpfxI/s1600-h/image001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5060632013835052386" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp0.blogger.com/_OyrxYulzYnY/Rjr6ARObpWI/AAAAAAAAAcM/3wh_vRfpfxI/s320/image001.jpg" border="0" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;p align="center"&gt;ภาพโครงสร้างคร่าวๆ ของ LDAP&lt;/p&gt;&lt;p align="left"&gt;2. ถ้าเรียกแล้วข้อมูลขึ้นดังตัวอย่าง โดยที่ไม่มี Error ใดๆ ถือว่าเราสามารถที่จะเรียกได้&lt;br /&gt;&lt;br /&gt;dn: msisdn=66xxxxxxxxx,domainName=msisdn,O=xxx,C=TH&lt;br /&gt;msisdn: 66xxxxxxxxx&lt;br /&gt;objectClass: subscriber&lt;br /&gt;dn: serviceName=subProfile,msisdn=66xxxxxxxxx, domainName=msisdn, O=xxx ,C=TH&lt;br /&gt;serviceName: subProfile&lt;br /&gt;objectClass: subProfile&lt;br /&gt;spImsi: 6223904495254321&lt;br /&gt;spIccid: 00000000000000000000&lt;br /&gt;spPricePlan:&lt;br /&gt;spProvDate: 04012002&lt;br /&gt;spAccountType: POS&lt;br /&gt;spSubType:&lt;br /&gt;spAccountCateg:&lt;br /&gt;spSubStatus: A&lt;br /&gt;spLanguage: english&lt;br /&gt;spSKSegment:&lt;br /&gt;spSKMobileType:&lt;br /&gt;spRBTService: FALSE&lt;br /&gt;spSupService: 000000000000000000000000&lt;br /&gt;&lt;br /&gt;3. วิธีการเรียกด้วยจาวา จะทำดังนี้&lt;/p&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;&lt;br /&gt;Hashtable env = new Hashtable();&lt;br /&gt;env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");&lt;br /&gt;env.put(Context.PROVIDER_URL, "ldap://&lt;span style="color: rgb(255, 0, 0);"&gt;IP&lt;/span&gt;:&lt;span style="color: rgb(255, 0, 0);"&gt;PORT&lt;/span&gt;/o=&lt;span style="color: rgb(255, 0, 0);"&gt;organization&lt;/span&gt;,c=&lt;span style="color: rgb(255, 0, 0);"&gt;country&lt;/span&gt;");&lt;br /&gt;env.put(Context.SECURITY_AUTHENTICATION, "simple");&lt;br /&gt;env.put(Context.SECURITY_PRINCIPAL, "cn=&lt;span style="color: rgb(255, 0, 0);"&gt;username&lt;/span&gt;,o=&lt;span style="color: rgb(255, 0, 0);"&gt;organization&lt;/span&gt;,c=&lt;span style="color: rgb(255, 0, 0);"&gt;country&lt;/span&gt;");&lt;br /&gt;env.put(Context.SECURITY_CREDENTIALS, &lt;span style="color: rgb(255, 0, 0);"&gt;password&lt;/span&gt;);&lt;br /&gt;InitialDirContext initNamingContext = new InitialDirContext(env);&lt;br /&gt;Attributes attrs = initNamingContext.getAttributes(&lt;span style="color: rgb(255, 0, 0);"&gt;service&lt;/span&gt;);&lt;br /&gt;attrs.get(&lt;span style="color: rgb(255, 0, 0);"&gt;ชื่อที่ต้องการจะดึงขึ้นมา&lt;/span&gt;).get()); &lt;/div&gt;ชื่อที่ต้องการจะดึงขึ้นมานั้นจะเป็นคล้ายๆ แบบที่ 2 เช่น spSubType เป็นต้น&lt;br /&gt;&lt;p&gt;&lt;br /&gt;ใช้สำหรับ Config Timeout ให้กับ LDAP โดย put com.sun.jndi.ldap.connect.timeout ลงไปด้วย&lt;br /&gt;เช่น env.put("com.sun.jndi.ldap.connect.timeout", "1000");&lt;br /&gt;และสำหรับ Config Read Timeout โอยเพิ่ม put com.sun.jndi.ldap.read.timeout&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7494634747707279370?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7494634747707279370/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7494634747707279370' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7494634747707279370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7494634747707279370'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/ldap.html' title='วิธีการเขียนข้อมูลเรียก LDAP'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_OyrxYulzYnY/Rjr6ARObpWI/AAAAAAAAAcM/3wh_vRfpfxI/s72-c/image001.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3835889141235011466</id><published>2007-09-13T00:44:00.000+08:00</published><updated>2007-09-13T00:44:42.997+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>การ ฺBasic Config Object Pool Manager สำหรับ Websphere 6.0x</title><content type='html'>เป็นการ Config ให้เราใช้ Object Pool โดยใช้ความสามารถของ Websphere ในการจัดการ Pool ซึ่งถ้าเราไม่ใช้ของ Websphere สามารถที่จะใช้ &lt;a href="http://jakarta.apache.org/commons/pool/"&gt;Common Pool&lt;/a&gt; ได้ มีวิธีใช้ดังนี้ครับ&lt;br /&gt;1. เราจะต้องไป Config Object Pool ใน Admin Console ก่อนโดยจะอยู่ที่ Resources --&gt; Object pool managers&lt;br /&gt;2. New จะขึ้นดีงรูป&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/RnDqkOHFJCI/AAAAAAAAAdY/RdnRbzJ9ct4/s1600-h/Websphere6.0+-ObjectPool01.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5075814688030532642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_OyrxYulzYnY/RnDqkOHFJCI/AAAAAAAAAdY/RdnRbzJ9ct4/s320/Websphere6.0+-ObjectPool01.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Name &lt;/span&gt;ตั้งชื่อ Object Pool ของเรา&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;JNDI Name&lt;/span&gt; ตั้งชื่อ JNDI ไว้สำหรับเราเรียกใช้งาน&lt;br /&gt;3. หลังจากเสร็จแล้ว Save ข้อมูล&lt;br /&gt;4. เปิดการใช้งานโดยไป Enable ที่ Application Server โดยจะอยู่ที่&lt;br /&gt;4.1 Servers --&gt; Application Servers --&gt; แล้วก็เลือก Server ของเรา&lt;br /&gt;4.2 ไปดูที่ Container Services (อยู่ตรงส่วน Container Settings) --&gt; Object pool service&lt;br /&gt;4.3 แล้ว ติ็กเลือก Enable service at server startup&lt;br /&gt;4.4 หลังจา้กนั้นกด apply แล้วก็ restart server เป็นอันใช้งานได้&lt;br /&gt;5. วิธีเรียกใช้งาน (ก่อนจะเรียกใช้งานทั้งจาก Web หรือ EJB จะต้องเพิ่ม Reference Resource ก่อนไม่อย่างนั้นจะไม่สามารถเรียกใช้งานได้)&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: rgb(255,255,153) 0% 50%; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"&gt;InitialContext ic = new InitialContext();&lt;br /&gt;ObjectPoolManager opm = (ObjectPoolManager)ic.lookup("java:comp/env/pool/test");&lt;br /&gt;arrayListPool = opm.getPool(ArrayList.class); //โยน Object ที่เราต้องการลงไป&lt;br /&gt;&lt;br /&gt;arrayListPool.returnObject(obj); // หลังจากใช้เสร็จต้อง Return เสมอไม่งั้นมันจะค้างเป็น Garbage ในระบบ &lt;/div&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;*ควรจะ Config 1 Pool/1 Object  จะได้ไม่มีปัญหา&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3835889141235011466?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3835889141235011466/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3835889141235011466' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3835889141235011466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3835889141235011466'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/basic-config-object-pool-manager.html' title='การ ฺBasic Config Object Pool Manager สำหรับ Websphere 6.0x'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_OyrxYulzYnY/RnDqkOHFJCI/AAAAAAAAAdY/RdnRbzJ9ct4/s72-c/Websphere6.0+-ObjectPool01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6806841220241736830</id><published>2007-09-13T00:43:00.000+08:00</published><updated>2008-01-11T12:35:50.214+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem RAD 6.0'/><title type='text'>ปัญหาที่พบบ่อยบน Rad 6.0</title><content type='html'>อันนี้ผมรวบรวมปัญหาที่ผมพบบ่อยพร้อมวิธีแก้นะครับ (หลังจาก Update Patch หมดแล้ว)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Q :&lt;/strong&gt; พอสั่ง Run server แล้วดันกลายเป็นสั่งให้ Publish แล้วทำให้ Start Server ไม่ได้&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A :&lt;/strong&gt; ให้ทำการปิดเปิด Rad 6.0 ใหม่ ถ้ายังไม่หายอีกให้ Restart เครื่องซึ่งน่าจะหายหมด&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Q :&lt;/strong&gt; อยู่ดีๆ Config ของ Workspace หายไป เช่น Classpath ของ Ear เรา หรือว่าอยู่ดีๆ Application เราก็ Error ทั้งๆ ทีไม่ได้ทำอะไร&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A :&lt;/strong&gt; ให้ Config ใหม่ครับ ก็จะทำงานได้ หรือ Restart อีกครั้งนึงหลังจากปิดไปแล้ว&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Q :&lt;/strong&gt; ปัญหา Generate Webservice ไม่ได้&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A :&lt;/strong&gt; บางทีเราอาจจะ Generate บ่อยเลยไม่สามารถ Generate ได้ให้ไปสร้าง Project ใหม่พื่อ Generate จะสามารถ Generate ได้ครับ (ถ้าจะให้ดีสร้าง Workspace ใหม่เลย)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Q :&lt;/strong&gt; ทำไมบางทีเรา Restart Server แล้วมันค้างที่ Starting ตลอดเลย&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A :&lt;/strong&gt; แก้โดยให้ Stop Server แล้วเอา Application ที่อยู่ใน Server ออกให้หมดแล้ว Start อีกทีก็น่าจะได้ แล้วส่ง Publish ก่อนแล้วค่อยเอา Application ไปลงที่ Server อีกทีก็จะใช้งานได้&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Q : ทำไม Generate Web Service Client แล้วไปเรียกคนอื่นไม่ได้&lt;/span&gt;&lt;br /&gt;A : Rad 6.0 มันใช้ Mechanism ในการไปเรียกเป็นของ IBM เองซึ่งมันเก่าอ่ะ ทำให้ไปเรียกไม่ได้ แล้วต้องเรียกผ่าน Server ด้วยเรียกผ่าน Application ไม่ได้ แล้วถ้าให้มันเป็น Axis มันก็เก่าไป เรียกคนอื่นไม่ได้ (Rad 7.0 ก็เป็นครับ) สามารถดูได้ที่ &lt;a href="http://yashima.blogspot.com/2007/04/connection-wsdl.html"&gt;Entry นี้&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;Q :&lt;/strong&gt; Config SSL แล้วไม่สามารถที่จะ Start Server ได้&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A :&lt;/strong&gt; ให้ Config เครื่องเป้นปี ค.ศ. ก็จะหายครับ (เกิดจาก Certification หมดอายุนั่นเอง มันมอง พ.ศ. เป็น ค.ศ.)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q&lt;/span&gt; : ปัญหาไม่สามารถเปิด File JSP ได้&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A &lt;/span&gt;: ปิด RAD 6.0 แล้วเปิดใหม่ก็จะหาย&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;: อยู่ดี ๆ RAD 6.0 ก็ปิดตัวเอง&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A&lt;/span&gt; : แสดงว่า Ram ของเครื่องน้อยเกินไปให้เพิ่ม ปัญหานี้ก็จะหายครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q : &lt;/span&gt;พอ Start Server แล้วมองไม่เห็น Class ใน Java Application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A :&lt;/span&gt; ให้ทำการ Set Java Dependencies ที่ Properties ของ Project นั้นๆ (จำเป็นจะต้อง Add ลงใน application.xml ใน Ear Project ก่อนด้วย)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q : &lt;/span&gt;เวลาสร้าง Server ใหม่แล้วเรียก Datasource จะมองไม่เห็น Table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;ปัญหานี้เกิดจากว่าเราสร้าง Server ใหม่แล้ว ตัวที่เรา Config (รวมทั้ง Datasource) ยังจำที่เรา Config ไว้ที่ Server เก่าอยู่ให้ลบทิ้งแล้ว Config ใหม่ก็จะหายครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q : &lt;/span&gt;ทำไมเวลเราเรียก Application แล้วมองไม่เห็น Class จากทางฝั่ง Web (เรียกจาก EJB)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;ปัญหาเกิดจากเอาไม่ได้กำหนดที่ Deployment Description บน Ear Project ให้เป็น Application น่ะครับ โดยทำตามนี้&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ไปที่ Tab Deployment (application.xml ใน Ear Project)&lt;/li&gt;&lt;li&gt;แล้วดูที่ Application (อยู่ล่างสุด) ให้ดูที่ WAR classloader policy ว่าเป็น APPLICATION หรือยัง ถ้ายังทำให้เป็นแล้ว Restart Application ใหม่ก็จะเห็นครับ&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Q : &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ทำไมตอนแรกเรียก EJB ได้ แล้วพอแก้ไขอะไรใหม่ กลับเรียกไม่ได้&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;วิธีแก้มีดังนี้ครับ&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ดู Error Log ก่อนว่ามันขึ้นมาเป็น JNDI Name Not Found หรือเปล่า ถ้าใช่แก้โดยได้ตรวจสอบ Reference ใน Web.xml ว่าไปเรียก EJB ถูกอันหรือเปล่า (ตรวจสอบทั้ง Web.xml และ ejb-jar.xml ว่าไปถูกตัวกันจริงหรือเปล่า) อ่านเพิ่มเติม &lt;a href="http://yashima.blogspot.com/2008/01/jndi-name-on-rad-60.html"&gt;ลิงค์นี้&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ถ้าไม่ได้ขึ้นแบบข้างบนให้แก้โดย Deploy EJB ใหม่โดยการคลิกขวาที่ EJB Project แล้วเลือก Deploy ครับ มันจะ Generate ตัว Stub ใหม่ แล้วจะใช้งานได้ กรณี่ที่ Deploy EJB ไม่ได้ให้ทำตาม &lt;a href="http://yashima.blogspot.com/2007/10/deploy-ejb-rad-60.html"&gt;ลิงค์นี้&lt;/a&gt; ครับ&lt;/li&gt;&lt;li&gt;ถ้ายังไม่ได้อีกลอง Clean Project ทั้งหมดที่ใช้แล้ว Build ใหม่ดูน่าจะหายครับ&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Q :&lt;/span&gt; File Config (.xml เช่น web.xml) พอแก้ไขแล้วทำไมยังเป็น Config แบบเดิมอยู่&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A : &lt;/span&gt;พวก File เหล่านี้ ถ้าเราแก้ไขแล้ว เราจะต้องทำการ Restart Application เสมอ เพราะ Rad 6.0 จะไม่ Restart ให้ครับ ต้องมา Restart เอง (ในบางครั้ง อาจจะต้องสั่ง Publish Server ใหม่ด้วยถึงจะเป็น Config แบบใหม่)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6806841220241736830?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6806841220241736830/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6806841220241736830' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6806841220241736830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6806841220241736830'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/07/rad-60.html' title='ปัญหาที่พบบ่อยบน Rad 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8639126587887228493</id><published>2007-09-11T17:30:00.000+08:00</published><updated>2007-12-19T18:19:25.960+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTPURLConnection'/><title type='text'>ปัญหาการรับค่าจาก HttpURLConnection</title><content type='html'>การรับค่าจาก HttpURLConnection โดยปกติผมจะใช้วิธีดูจาก .available&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ตัวอย่างที่ผมเขียนเรียกปกติ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;String vXMLStr = request.getParameter("data");&lt;br /&gt;OutputStream vOs = null;&lt;br /&gt;OutputStreamWriter vOsw = null;&lt;br /&gt;URL vUrl = new URL(request.getParameter("url"));&lt;br /&gt;HttpURLConnection vHttpConn = (HttpURLConnection) vUrl.openConnection();&lt;br /&gt;&lt;br /&gt;vHttpConn.setUseCaches(false);&lt;br /&gt;vHttpConn.setRequestMethod("POST");&lt;br /&gt;vHttpConn.setRequestProperty("Content-Type", "application/x-www-urlencoded");&lt;br /&gt;vHttpConn.setRequestProperty("Content-Length", Integer.toString(vXMLStr.length()));&lt;br /&gt;vHttpConn.setDoInput(true);&lt;br /&gt;vHttpConn.setDoOutput(true);&lt;br /&gt;vHttpConn.connect();&lt;br /&gt;&lt;br /&gt;vOs = vHttpConn.getOutputStream();&lt;br /&gt;vOsw = new OutputStreamWriter(vOs);&lt;br /&gt;vOsw.write(vXMLStr);&lt;br /&gt;vOsw.flush();&lt;br /&gt;vOsw.close();&lt;br /&gt;vOsw = null;&lt;br /&gt;vOs = null;&lt;br /&gt;&lt;br /&gt;// get response&lt;br /&gt;InputStream vIs = null;&lt;br /&gt;vIs = vHttpConn.getInputStream();&lt;br /&gt;DataInputStream din = new DataInputStream(vIs);&lt;br /&gt;StringBuffer buffer = new StringBuffer();&lt;br /&gt;String b = "";&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;while(din.available() &gt; 0) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    buffer.append(b);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;vIs.close();&lt;br /&gt;&lt;br /&gt;System.out.println("Result : " + buffer.toString());&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;ซึ่งดูจากตัวอย่างจะเห็นว่าผมใช้ din.available() &gt; 0 ซึ่งบางทีไปเรียกแล้วจะรับค่าไม่ได้ จำเป็นต้องเปลี่ยนเป็นวิธีอื่น เช่น ที่ผมรับไม่ได้ผมแก้เป็น&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; (b = din.readLine()) != null&lt;/span&gt; ตัวนี้แทนก็จะทำงานได้ครับ สามารถรับค่าได้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8639126587887228493?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8639126587887228493/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8639126587887228493' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8639126587887228493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8639126587887228493'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/09/httpurlconnection.html' title='ปัญหาการรับค่าจาก HttpURLConnection'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2280972301348770774</id><published>2007-09-05T16:42:00.000+08:00</published><updated>2007-09-05T16:42:32.995+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Install JRE'/><title type='text'>Config Rad6.0 ให้สามารใช้ JDK มากกว่า 1.5 ได้</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;คำเตือน&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1. เมื่อทำแล้วอาจจะทำให้ Java บางไฟลล์ ต้องทำการแก้ไข หรืออาจจะทำให้เรา Generate EJB ไม่ได้ (อันนี้ผมเป็นเลยไม่แน่ใจว่าเครื่องอื่นเป็นหรือเปล่าน่ะครับ)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;2. เราไม่สามารถที่จะเปลี่ยนที่  Preference --&gt; Java --&gt; Compiler ในส่วนของ Compliance and Classfiles ให้เป็น Java เวอร์ชันมากกว่า 1.4 ได้ครับ อาจจะทำให้มีปัญหาอย่างอื่นตามมาแนะนำให้ไปใช้ Rad7.0 เลยครับ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;วิธีทำดังนี้&lt;/span&gt;&lt;br /&gt;1. ให้ทำการเลือก Window --&gt; Preference&lt;br /&gt;2. ไปที่ Java แล้วคลิกที่ Installed JRE&lt;br /&gt;3. ทำการ Add JRE เวอร์ชันที่เราต้องการลงไป เช่น C:\Program Files\Java\jre1.5.0_06 เป็นต้น&lt;br /&gt;4. แล้วเราก็ทำการแก้ทีละ Project ให้ใช้ JRE ตัวที่เราตั้งใหม่นี้&lt;br /&gt;5. โดยการคลิกขวาที่ Project แล้วเลือก Properties ที่ Java Build Path&lt;br /&gt;ุ6. เลือกที่ Tab Libraries&lt;br /&gt;7. เลือก JRE System Library แล้วคลิด Edit&lt;br /&gt;8.  ให้เลือก Alternate JRE แล้วก็เลือก JRE ที่เราทำการ Add ไปใหม่ ก็จะใช้งานได้แล้วครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2280972301348770774?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2280972301348770774/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2280972301348770774' title='2 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2280972301348770774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2280972301348770774'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/09/config-rad60-jdk-15.html' title='Config Rad6.0 ให้สามารใช้ JDK มากกว่า 1.5 ได้'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3953624554471078717</id><published>2007-09-05T16:22:00.001+08:00</published><updated>2007-12-19T18:18:58.516+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTPURLConnection'/><category scheme='http://www.blogger.com/atom/ns#' term='Set Connection Time Out'/><title type='text'>Set Connection Timeout ใน HTTPURLConnection</title><content type='html'>สำหรับ JDK เวอร์ชั่นต่ำกว่า 1.4 จะไม่ให้ Config ค่านี้ครับ เราจำเป็นจะต้องไปใช้อย่างอื่นแทน เช่น &lt;a href="http://commons.apache.org/httpclient/"&gt;HTTPClient&lt;/a&gt;&lt;br /&gt;แต่สำหรับ เวอร์ชั่น 1.5 ขึ้นไปจะมีให้ใช้แล้วครับ เป็น .setConnecionTimeOut น่ะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3953624554471078717?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3953624554471078717/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3953624554471078717' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3953624554471078717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3953624554471078717'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/09/set-connection-timeout.html' title='Set Connection Timeout ใน HTTPURLConnection'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8775712888007742751</id><published>2007-08-21T13:49:00.002+08:00</published><updated>2008-07-28T12:19:59.941+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Reference'/><title type='text'>My Reference</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Reference ของผมเก็บไว้ดูน่ะครับ&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.javareference.com/jrexamples/viewexample.jsp?id=47"&gt;- Writing a multithreaded Socket Server&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.narisa.com/forums/lofiversion/index.php?t17004.html"&gt;- SIP คืออะไร&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www-128.ibm.com/developerworks/websphere/techjournal/0504_reinitz/0504_reinitz.html"&gt;- การใช้งาน JMS บน Websphere&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/websphere/library/techarticles/0402_du/0402_du.html"&gt;- Web Service using SOAP over JMS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webagesolutions.com/knowledgebase/waskb/waskb019/index.html"&gt;- Creating a Basic Business Process in WebSphere Integration Developer 6&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8775712888007742751?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8775712888007742751/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8775712888007742751' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8775712888007742751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8775712888007742751'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/08/my-reference.html' title='My Reference'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8116508684255698277</id><published>2007-08-21T11:42:00.002+08:00</published><updated>2007-08-21T11:42:43.805+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMeter'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Load Test'/><title type='text'>Basic Config For JMeter</title><content type='html'>&lt;span style="font-weight: bold;"&gt;มาอธิบายกันก่อนครับ &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; คืออะไร&lt;/span&gt;&lt;br /&gt;- &lt;a href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt; คือ Java Application ที่ไว้สำหรับ Load Test Application ของเรา (ทำได้หลายอย่างไม่ว่าจะเ็ป็น JDBC, Web หรือ Web Service เป็นต้น)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;วิธีการใช้งาน (แบบ GUI)&lt;/span&gt;&lt;br /&gt;1. ก็ Run &lt;a href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt; ขึ้นมา โดยการไปที่คลาย Zip &lt;a href="http://jakarta.apache.org/jmeter/"&gt;JMeter&lt;/a&gt; แล้วไปที่ bin แล้วสั่งรัน jmeter ก็จะใช้งานได้ครับ จะขึ้นมาดังภาพ (จะมี Parameter เพิ่มเติม เช่น ถ้าผ่าน Proxy ก็ต้องมี -H สำหรับ Proxy Host Name และ -P สำหรับ Proxy Port)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_OyrxYulzYnY/RspckT0Q6nI/AAAAAAAAAks/BpfSF1oCANU/s1600-h/JMeter.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_OyrxYulzYnY/RspckT0Q6nI/AAAAAAAAAks/BpfSF1oCANU/s320/JMeter.jpg" alt="" id="BLOGGER_PHOTO_ID_5100991306815040114" border="0" /&gt;&lt;/a&gt;2. ขั้นแรก Add Thread Group ก่อน โดย คลิกขวาที่ Test Plan ส่วนนี้จะมีการกำหนดว่าจะมีจำนวน Request เท่าไร ทำกี่ครั้ง ประมาณนี้ครับ&lt;br /&gt;3. แล้วก็คลิกขวาที่ Thread Group เพื่อทำการ Add ที่เราต้องการ Load Test โดยจะอยู่ที่ Sampler&lt;br /&gt;4. ในที่นี้จะ Add HTTP Request พอทำการ Add เสร็จเราก็จะมา Config ว่าไปที่ Server อะไร Port อะไร ใช้ Method (POST/GET) อะไร Path อะไร มี Request อะไรบ้าง&lt;br /&gt;5. แค่นี้เราก็สามารถ Load Test ใช้งานได้ครับ&lt;br /&gt;ุุ6. ถ้าเราต้องการดู Summary ว่าที่ส่งไปเป็นไงบ้าง เราจะต้องทำการ Add Listener เพื่อจะดูได้ว่า Request ที่เข้าไปเป็นไงบ้าง ใช้เวลาเท่าไรบ้าง&lt;br /&gt;&lt;br /&gt;ปล. อันนี้แบบง่ายๆ ให้ใช้งานได้นะครับ ยังไงถ้าต้องการข้อมูลเพิ่มเติมสามารถไปหาอ่านได้ที่ Web ครับ ทำอะไรได้เยอะพอสมควร&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;/span&gt;&lt;br /&gt;&lt;a href="http://jakarta.apache.org/jmeter/usermanual/index.html"&gt;http://jakarta.apache.org/jmeter/usermanual/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8116508684255698277?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8116508684255698277/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8116508684255698277' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8116508684255698277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8116508684255698277'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/08/basic-config-for-jmeter.html' title='Basic Config For JMeter'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_OyrxYulzYnY/RspckT0Q6nI/AAAAAAAAAks/BpfSF1oCANU/s72-c/JMeter.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8049170210847494313</id><published>2007-08-16T11:31:00.000+08:00</published><updated>2007-08-16T11:31:16.881+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle DB Broken Pipe'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><title type='text'>วิธีแก้ Broken Pipe บน Websphere Server 6.1</title><content type='html'>วิธีแก้เราจะต้องเพิ่มให้มัน Test Connection บ่อยๆ เพื่อ Connection จะได้ใช้งานได้ตลอดน่ะครับ (สำหรับ Oracle นะครับ)&lt;br /&gt;&lt;br /&gt;วิธีทำ ทำดังนี้&lt;br /&gt;1. ไปที่ Resource --&gt; Datasource --&gt; Name Of Datasource&lt;br /&gt;2. คลิกที่ WebSphere Application Server data source properties&lt;br /&gt;3. ติกเลือก ให้มี Pretest connection properties แล้วเราก็คอนฟิกว่าจะให้เทสบ่อยแค่ไหน ยิ่งบ่อย Performance ยิงจะ Drop ลงนะครับ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;หมายเหตุ&lt;/span&gt;&lt;br /&gt;1. ปัญหาที่เกิดขึ้นอาจจะเกิดจาก Firewall มีการตัด Connection ที่เปิดค้างไว้นาน&lt;br /&gt;2. อาจจะเกิดจาก Router ทำการ Disconnect เวลา Connection ไม่ได้ทำงาน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8049170210847494313?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8049170210847494313/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8049170210847494313' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8049170210847494313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8049170210847494313'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/02/broken-pipe-websphere-server-61.html' title='วิธีแก้ Broken Pipe บน Websphere Server 6.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-564682546840017803</id><published>2007-08-16T11:27:00.003+08:00</published><updated>2007-08-16T11:27:53.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='RAD 6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Share Library'/><title type='text'>การ Config Share Library บน Websphere 6.1</title><content type='html'>Share Library มีไว้เพื่อเราจะได้ไม่ต้องเอา Library ไปไว้ใน .ear file จะทำให้ ear file มีขนาดเล็กลง ซึ่งวิธีการ Config นั้น ต้องทำสองที่คือที่ Application กับ ที่ Server ให้เป็นชื่อ Share Library เดียวกัน(&lt;span style="color: rgb(255, 0, 0);"&gt;ในบางกรณี ถ้าใช้ชื่อเดียวกันแล้วมันจะมีปัญหาก็ให้ Config กันคนละชื่อแต่เวลา Deploy ให้อ้างถึงตัวที่อยู่บน Server&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;การ Config Share Library บน Rad&lt;/span&gt;&lt;br /&gt;1. ให้เปิด application.xml ที่ ear project&lt;br /&gt;2. ให้ไปที่ tab Deployment&lt;br /&gt;3. จะอยู่ในส่วนของ Shared Library ดังรูป&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/RsPCKj0Q6lI/AAAAAAAAAkY/HpV-Pe5DN4E/s1600-h/RAD+Share+Lib.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/RsPCKj0Q6lI/AAAAAAAAAkY/HpV-Pe5DN4E/s320/RAD+Share+Lib.jpg" alt="" id="BLOGGER_PHOTO_ID_5099132689782467154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. แล้วทำการ Add โดยกดที่ปุ่ม Add แล้วก็ตั้งชื่อ Share Library, Description, Class Path (เป็น Directory ที่เรามี Jar File )&lt;br /&gt;5. Save File แล้วทำการ Restart Server ในเครื่องของเราจะทำให้ Application ของเราใช้งานได้โดยมี Share Library&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;การ Config Share Library บน Websphere Server 6.1&lt;/span&gt; (บน Websphere 6.0x จะทำเหมือนกันแต่ Config จะอยู่ต่างที่กันนิดหน่อย)&lt;br /&gt;1. ให้ไปที่ Environment --&gt; Shared Libraries&lt;br /&gt;2. คลิก New(ต้องเลือก Scope ของ Shre Library ว่าจะไว้ที่ไหน) แล้วก็ทำการกำหนด Name, Description, Classpath (สามารถกำหนดเป็น Directory หรือ ชื่อ Jar File ได้เหมือนกัน) ดังรูป&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_OyrxYulzYnY/RsPDtj0Q6mI/AAAAAAAAAkg/Gk88wLzycXw/s1600-h/Websphere+Share+Lib.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_OyrxYulzYnY/RsPDtj0Q6mI/AAAAAAAAAkg/Gk88wLzycXw/s320/Websphere+Share+Lib.jpg" alt="" id="BLOGGER_PHOTO_ID_5099134390589516386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5. ทำการ Save เป็นอันเสร็จ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-564682546840017803?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/564682546840017803/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=564682546840017803' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/564682546840017803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/564682546840017803'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/08/config-share-library-websphere-61.html' title='การ Config Share Library บน Websphere 6.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_OyrxYulzYnY/RsPCKj0Q6lI/AAAAAAAAAkY/HpV-Pe5DN4E/s72-c/RAD+Share+Lib.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1744414904805810093</id><published>2007-08-08T15:04:00.002+08:00</published><updated>2007-08-08T15:04:45.142+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Tivoli Viewer'/><title type='text'>ดู Process การทำงานของ Websphere 6.1</title><content type='html'>เมนูจะอยู่ที่  Moniroting and Tuning --&gt; Performance Viewer แล้วก็เลือก Current Activity จากนั้นเลือก Server ที่จะดู ก็สามารถจะดูได้แล้วครับ&lt;br /&gt;ซึงจากรูปจะมีดังนี้&lt;br /&gt;Name คือ ชื่อ ไฟล์ ที่มีการเรียก&lt;br /&gt;Application คือ Application ที่เรา Deploy ไว้ (.war)&lt;br /&gt;Total Request คือ จำนวนที่เรา Request เข้ามาว่ามีเท่าไร&lt;br /&gt;&lt;br /&gt;แล้วยังมีส่วนอื่นเป็นส่วนที่สรุปไว้ คือ&lt;br /&gt;- Advisor เป็นส่วนแนะนำว่ามีส่วนไหน ควรจะต้องการแก้ไขบ้างใน Application&lt;br /&gt;- Setting ส่วนของการ Setting ต่างๆ&lt;br /&gt;- Summary Reports สรุป ส่วนต่างๆ ที่มีการใช้งานมีดังนี้ Servlets, EJBs, EJB Method, Connection Pool, Thread Pool ซึ่งมีข้อมูลบอก  Name, Application, Total Requests, Avg Resp Time, Total Time&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_OyrxYulzYnY/Rrln4G4eyuI/AAAAAAAAAeM/dCYCIF5TTBM/s1600-h/Tivoli+Viewer.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_OyrxYulzYnY/Rrln4G4eyuI/AAAAAAAAAeM/dCYCIF5TTBM/s320/Tivoli+Viewer.jpg" alt="" id="BLOGGER_PHOTO_ID_5096218666964273890" border="0" /&gt;&lt;/a&gt;ภาพของ Tivoli Viewer&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1744414904805810093?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1744414904805810093/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1744414904805810093' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1744414904805810093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1744414904805810093'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/08/process-websphere-61.html' title='ดู Process การทำงานของ Websphere 6.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_OyrxYulzYnY/Rrln4G4eyuI/AAAAAAAAAeM/dCYCIF5TTBM/s72-c/Tivoli+Viewer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4224347092827188116</id><published>2007-08-08T01:12:00.000+08:00</published><updated>2007-08-08T01:12:28.577+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle DB Broken Pipe'/><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='SQA'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>แนะนำเวบสำหรับคนจะไปสมัครงานทางด้าน Computer ครับ</title><content type='html'>เวบนี้เลย &lt;a href="http://www.employmentlead.com/"&gt;http://www.employmentlead.com/&lt;/a&gt; จะแนะนำพวกคำถามที่ถามกัน แล้วก็ถ้าเป็นเฉพาะทางอย่างจาวา จะมีอธิบายคำตอบไว้ด้วยว่าเป็นอะไรครับ ที่เห็นตอนนี้มี&lt;br /&gt;     - C/C++ Interview&lt;br /&gt;     - Oracle Interview&lt;br /&gt;     - Networks Interviews&lt;br /&gt;     - Java Interviews&lt;br /&gt;     - SQA Interviews&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;เป็นคำถามที่ผมเคยโดนถามน่ะครับ&lt;/strong&gt;&lt;br /&gt;1. String กับ StringBuffer ต่างกันอย่างไร&lt;br /&gt;2. java.util.Date กับ java.sql.Dateต่างกันอย่างไร&lt;br /&gt;3. JSP กับ Servlet ต่างกันอย่างไร&lt;br /&gt;4. Life Cycle ของ Servlet&lt;br /&gt;5. Life Cycle ของ EJB&lt;br /&gt;6. รู้จัก Framework ดังต่อไปนี้ Strut, Spring, Hibernate ว่ามันไว้ทำอะไร&lt;br /&gt;7. HashMap คืออะไร&lt;br /&gt;8. Config web.xml ได้&lt;br /&gt;9. Web Service คืออะไร&lt;br /&gt;10. SOAP คืออะไร&lt;br /&gt;11. เขียน Web อย่างงายๆ ได้โดยที่มีการใช้ Session&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4224347092827188116?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4224347092827188116/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4224347092827188116' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4224347092827188116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4224347092827188116'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/computer.html' title='แนะนำเวบสำหรับคนจะไปสมัครงานทางด้าน Computer ครับ'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2765111495736260943</id><published>2007-08-08T00:33:00.001+08:00</published><updated>2007-08-08T00:33:54.220+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='config download file'/><title type='text'>วิธีการ Config ให้ Download ด้วยชื่อที่เราตั้งไว้</title><content type='html'>อันนี้จะ Config ไว้ใน Servlet พอเรา กดไปจะทำการ Download File ได้ชื่อที่เราตั้งไว้&lt;br /&gt;&lt;br /&gt;โดยเพิ่ม ส่วนนี้เข้าไป&lt;br /&gt;response.setHeader( "Content-disposition", "attachment; filename=\"" + &lt;span style="COLOR: rgb(255,0,0)"&gt;ชื่อ File&lt;/span&gt; + "\"");&lt;br /&gt;&lt;br /&gt;ส่วน web.xml ให้เพิ่ม&lt;br /&gt;&lt;br /&gt;&amp;lt;mime-mapping&gt;&lt;br /&gt;&amp;lt;extension&amp;gt;txt&amp;lt;/extension&amp;gt;&lt;br /&gt;&amp;lt;mime-type&amp;gt;text/plain&amp;lt;/mime-type&amp;gt;&lt;br /&gt;&amp;lt;/mime-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;เพื่อบอกว่าเป็น File ชนิดไหน&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2765111495736260943?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2765111495736260943/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2765111495736260943' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2765111495736260943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2765111495736260943'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/07/config-download.html' title='วิธีการ Config ให้ Download ด้วยชื่อที่เราตั้งไว้'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3572428772062638240</id><published>2007-07-23T19:36:00.000+08:00</published><updated>2007-07-23T19:36:24.597+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RPC'/><category scheme='http://www.blogger.com/atom/ns#' term='WSDL'/><title type='text'>วิธีแก้ Too many parameters exceeding the limit of 255 words เวลา Generate WSDL</title><content type='html'>วิธีแก้จริงๆ นั้นไม่มีเพราะเป็น Limit ของ JDK 1.4.x อยู่แล้วครับ เราสามารถแก้โดยเลี่ยง ที่ผมรู้ก็มี 2 วิธี&lt;br /&gt;1. ให้ดูที่ File WSDL แล้วลบ Parameter ที่เราไม่ใช่ทิ้งไป แล้ว Generate Stub ใหม่ครับ ซึ่งจะได้เฉพาะ ฟิลด์ที่เราต้องการ อย่างเดียว (ถ้ามีที่ต้องการเอาไม่เกิน 255 ตัวแปรน่ะครับ)โดยไปลบที่ชื่อประมาณ tag &amp;lt;element type="xxx" name="xxx"&amp;gt;(ซึ่งวิธีนีจะแก้กลับ Websphere 6.x ไม่ได้เพราะว่า Websphere จะมองว่า attribute มีค่า จะต้องดึงออกมาให้หมด แต่ถ้าเขาไม่ return มาให้จะทำงานได้ครับ)&lt;br /&gt;2. ใช้วิธีเรียกผ่าน RPC เลย ซึ่งค่าที่ Return มานั้นจะเป็น SOAPElement (แต่จะเป็นของ Package ขึ้นอยู่กับตัว Server ที่เราทำ เช่นของ IBM จะเป็น com.ibm.ws.webservices.engine.xmlsoap.SOAPElement) แล้วเราค่อยดึงค่าอกมาคล้ายๆ กับ DOM4J หรือ JDOM&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;//Init Service&lt;br /&gt;String wsdlURL = &amp;lt;wsdl&amp;gt;;&lt;br /&gt;String namespace = &amp;lt;namespace&amp;gt;;&lt;br /&gt;String serviceName = &amp;lt;servicename&amp;gt;;&lt;br /&gt;javax.xml.namespace.QName serviceQN = new javax.xml.namespace.QName(namespace, serviceName);&lt;br /&gt;javax.xml.rpc.ServiceFactory serviceFactory = org.apache.axis.client.ServiceFactory.newInstance(); //&lt;span style="color:#ff0000;"&gt;เป็นส่วนที่ดึงค่าว่าจะใช้วิธีไหนในการ Call Web Service ซึ่งจะตามระบบที่เราเขียน และถ้าต้องการใช้เฉพาะเจาะจงไปเลยอย่าง Axis ให้อ้าง Service ที่อยู่ใน Axis ไปเลย&lt;br /&gt;&lt;/span&gt;javax.xml.rpc.Service service = serviceFactory.createService(new java.net.URL(wsdlURL), serviceQN);&lt;br /&gt;&lt;br /&gt;//Create Call&lt;br /&gt;javax.xml.rpc.Call call = service.createCall();&lt;br /&gt;call.setPortTypeName(serviceQN);&lt;br /&gt;call.setOperationName(new javax.xml.namespace.QName(namespace, &amp;lt;operation&amp;gt;));&lt;br /&gt;call.setPortTypeName(new javax.xml.namespace.QName(namespace , &amp;lt;port&amp;gt;));&lt;br /&gt;call.setProperty(javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY, "");&lt;br /&gt;call.setProperty(javax.xml.rpc.Call.OPERATION_STYLE_PROPERTY, "wrapped");&lt;br /&gt;Object[] reqObj = new java.lang.Object[] {&amp;lt;request&amp;gt;};&lt;br /&gt;java.lang.Object _resp = call.invoke(reqObj);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;คำอธิบายแต่ละตัว&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;1. &amp;lt;wsdl&amp;gt;&lt;/strong&gt;คือ URL ของ WSDL ที่เราสามารถดึงออกมาได้&lt;br /&gt;&lt;strong&gt;2. &amp;lt;namespace&amp;gt;&lt;/strong&gt;คือ Name Space ของ WSDL นี้ โดยให้ดูที่ WSDL ที่ชื่อ targetNamespace&lt;br /&gt;&lt;strong&gt;3. &amp;lt;servicename&amp;gt;&lt;/strong&gt;คือ Service Name ของ WSDL นี้ โดยดูจาก wsdl:service ว่ามีชื่ออะไร&lt;br /&gt;&lt;strong&gt;4. &amp;lt;operation&amp;gt;&lt;/strong&gt;คือ Operation Name ของ WSDL นี้ โดยดูจาก wsdl:operation ว่ามีชื่อว่าอะไร&lt;br /&gt;&lt;strong&gt;5. &amp;lt;port&amp;gt;&lt;/strong&gt;คือ Port Type Name ของ WSDL นี้ โดยดูจาก wsdl:portType&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3572428772062638240?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3572428772062638240/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3572428772062638240' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3572428772062638240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3572428772062638240'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/too-many-parameters-exceeding-limit-of.html' title='วิธีแก้ Too many parameters exceeding the limit of 255 words เวลา Generate WSDL'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2927228712565126057</id><published>2007-07-10T11:58:00.000+08:00</published><updated>2007-07-10T11:58:08.150+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTTP Proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Proxy'/><title type='text'>Java Config Proxy</title><content type='html'>&lt;p&gt;&lt;strong&gt;สำหรับ IBM&lt;/strong&gt;&lt;br /&gt;สามารถ Config ได้สองแบบ&lt;br /&gt;1. โดยใช้ System.setProperty(Class Path,ค่า) ซึ่งค่าที่ Set ไปจะใช้&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;b&gt;สำหรับ HTTP&lt;/b&gt;&lt;br /&gt;com.ibm.wsspi.webservices.HTTP_PROXYHOST_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTP_PROXYPORT_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTP_PROXYUSER_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTP_PROXYPASSWORD_PROPERTY&lt;br /&gt;&lt;b&gt;สำหรับ HTTPS&lt;/b&gt;&lt;br /&gt;com.ibm.wsspi.webservices.HTTPS_PROXYHOST_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTPS_PROXYPORT_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTPS_PROXYUSER_PROPERTY&lt;br /&gt;com.ibm.wsspi.webservices.HTTPS_PROXYPASSWORD_PROPERTY&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2. ไปที่หน้า Admin Console แล้วเลือกที่ Global security &gt; Custom properties จากนั้นก็ Add ลงไปเหมือน System.setProperty&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;สำหรับทั่วไปจะเป็นดังนี้&lt;br /&gt;1. จะใช้ System.setProperty เหมือนกัน แต่จะใช้&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;http.proxySet สำหรับว่าจะให้มีการใช้ค่า Proxy หรือเปล่า&lt;br /&gt;http.proxyHost&lt;br /&gt;http.proxyPort&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;b&gt;Reference&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/forums/dw_thread.jsp?forum=955&amp;thread=167392&amp;amp;cat=9"&gt;IBM Config Proxy&lt;/a&gt;&lt;br /&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzamy/50/webserv/wsseccfahttp.htm"&gt;Configure HTTP basic authentication for Web services&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.narisa.com/forums/index.php?showtopic=9523&amp;st=0&amp;amp;amp;amp;amp;amp;p=46768&amp;amp;#entry46768"&gt;Narisa Socket Programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2927228712565126057?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2927228712565126057/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2927228712565126057' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2927228712565126057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2927228712565126057'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/07/java-config-proxy.html' title='Java Config Proxy'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4976411400242418591</id><published>2007-07-04T00:26:00.002+08:00</published><updated>2007-07-04T00:26:45.188+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Convert Clob to String'/><category scheme='http://www.blogger.com/atom/ns#' term='java.sql.Clob'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>การ Config Clob Type บน Hibernate</title><content type='html'>การ Config นั้น บน XML เราจะไม่ต้องไปทำอะไรเลย แต่จะไปทำที่ Java File ให้เป็น Type --&gt; java.sql.Clob ก็จะสามารถใช้งานได้ครับ&lt;br /&gt;&lt;br /&gt;วิธีการ Convert java.sql.Clob to String ก็ทำดังนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;param_value.getSubString(1, (int)param_value.length());&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;โดย &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;param_value&lt;/span&gt;&lt;/strong&gt; จะเป็น&lt;strong&gt; java.sql.Clob&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4976411400242418591?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4976411400242418591/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4976411400242418591' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4976411400242418591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4976411400242418591'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/07/config-clob-type-hibernate.html' title='การ Config Clob Type บน Hibernate'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7315570924133007452</id><published>2007-06-22T13:27:00.001+08:00</published><updated>2007-12-21T12:29:58.179+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='check alive'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>การตรวจสอบว่า Web ที่เราติดต่อด้วยยังมีอยู่หรือเปล่า</title><content type='html'>การตรวจสอบนั้น ผมจะใช้วิธีเปิด Connection ไปแล้วตรวจสอบ Response Header ว่าเป็น 200 หรือเปล่า ถ้าเป็นแสดงว่ายังมีอยู่ ครับ (ควรที่จะเป็นหน้าเพจเช่น .html ในการตรวจสอบ เพราะอย่าง WebService จะไม่ส่งค่ามาให้เป็น 200 นะครับ) ดังตัวอย่างข้างล่าง&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;URL httpurl = new URL("http://10.4.130.64:9060/ibm/console/login.do");&lt;br /&gt;HttpURLConnection httpcon = (HttpURLConnection) httpurl.openConnection();&lt;br /&gt;httpcon.setRequestMethod("GET");&lt;br /&gt;httpcon.setDoInput(true);&lt;br /&gt;httpcon.setDoOutput(true);&lt;br /&gt;OutputStream out = httpcon.getOutputStream();&lt;br /&gt;out.write(10);&lt;br /&gt;out.flush();&lt;br /&gt;httpcon.connect();&lt;br /&gt;int statusCode = httpcon.getResponseCode();&lt;br /&gt;if (statusCode != 200 ){&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;//Do Somthing&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;} &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;เวบที่น่าสนใจ &lt;a href="http://web-sniffer.net/"&gt;http://web-sniffer.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7315570924133007452?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7315570924133007452/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7315570924133007452' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7315570924133007452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7315570924133007452'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/web.html' title='การตรวจสอบว่า Web ที่เราติดต่อด้วยยังมีอยู่หรือเปล่า'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6595043840957645773</id><published>2007-06-15T17:23:00.000+08:00</published><updated>2007-06-15T17:23:44.275+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><title type='text'>Basic Config Log4J</title><content type='html'>จะสอนวิธีใช้งานแบบง่ายๆ ของ &lt;a href="http://logging.apache.org/log4j/docs/index.html"&gt;Log4J&lt;/a&gt; นะครับ ว่าจะ Config ยังไงดี ซึ่งเราจะ Config ใน log4j.properties นะครับ Parameter ที่น่าจะรู้&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.rootCategory&lt;/span&gt; เป็นการกำหนด Log ทั้งหมดของเราว่าจะให้มีระดับเท่าไร ซึ่งใน Log4J จะมีระดับดังนี้ info, warn, debug and fatal&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.logger&lt;span style="color: rgb(255, 0, 0);"&gt;.package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;เป็นการกำหนดว่าจะให้ที่อยู่ในชื่นี้ทั้งหมดอยู่ในระดบไหน [ตรง Package ให้กำหนดเป็นชื่อหรือ Package ของ Class เราก็ได้ว่าจะให้มันอยู่ในระดับใดของ Log4J]&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.appender&lt;span style="color: rgb(255, 0, 0);"&gt;.package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt; กำหนดว่าจะให้ Log ออกแบบไหน เช่นลงไฟลล์หรือเปล่า&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.appender.&lt;span style="color: rgb(255, 0, 0);"&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.DatePattern&lt;/span&gt; เป็นรูปแบบของไฟลล์ว่าพอหมดวันแล้วจะเก็บรูปแบบไหน&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.appender.&lt;span style="color: rgb(255, 0, 0);"&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.File&lt;/span&gt;   กำหนัดว่าไฟลล์จะชื่ออะไร วางไว้ที่ไหน&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.appender&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.MaxFileSize  &lt;/span&gt;ความจุมากสุดของในแต่ละไฟลล์ ถ้าในวันนึงเกินจะหั่นไฟลล์ออกมา&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;appender&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;span style="color: rgb(255, 0, 0);"&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;layout &lt;/span&gt; จะให้ Pattern เป็นแบบไหน&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;log4j.appender.&lt;span style="color: rgb(255, 0, 0);"&gt;package&lt;/span&gt;.layout.ConversionPattern&lt;/span&gt; กำหนดรูปแบบว่าจะให้โชว์อะไรบ้าง&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ข้างล่างเป็นตัวอย่าง อย่างง่ายๆ ครับ&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border: 1pt solid blue; padding: 1pt 4pt; background: rgb(255, 255, 153) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;log4j.rootCategory = Info, stdout &lt;span style="color: rgb(51, 102, 255);"&gt;//บอกว่าให้ Log ทั้งหมดที่ระดับต่ำกว่า Info ไม่ต้องเอามาแสดง&lt;/span&gt; ส่วน stdout คือ System.out&lt;br /&gt;log4j.appender.stdout  = org.apache.log4j.ConsoleAppender &lt;span style="color: rgb(51, 102, 255);"&gt;//เป็นการบอกว่าออกที่ Console&lt;/span&gt;&lt;br /&gt;log4j.appender.stdout.layout  = org.apache.log4j.PatternLayout &lt;span style="color: rgb(51, 102, 255);"&gt;//Pattern&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;log4j.appender.stdout.layout.ConversionPattern  = ...[ABC Project]... [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n//รูปแบบของการออกโดย จะเป็นดังนี้ ... [ABC Project]... [รูปแบบของวันที่จะเป็น วัน/เดือน/ปี ชั่วโมง:นาที:วินาที,ไมโครวินาที] (ชื่อเต็มเช่น ชื่อ Class รวมกับ Package ทั้งหมด:บรรทัดที่รัน) - Level ของ Log  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;log4j.logger.com.true_corp.connector  = DEBUG,connectorlog &lt;span style="color: rgb(51, 102, 255);"&gt;//เป็นการบอกว่า Log ที่อยู่ใน&lt;/span&gt; Package com.true_corp.connector ทั้งหมดจะมีระดับ Log ที่ Debug แล้วตัวข้างหลังบอกว่าใช้เป็นตัวแปรชื่อนี้&lt;br /&gt;log4j.appender.connectorlog  = org.apache.log4j.DailyRollingFileAppender &lt;span style="color: rgb(51, 102, 255);"&gt;//กำหนดให้ connectorlog เก็บลงไฟลล์&lt;/span&gt;&lt;br /&gt;log4j.appender.connectorlog.DatePattern  = '.'yyyy_MM_dd &lt;span style="color: rgb(51, 102, 255);"&gt;//มีรูปแบบของวันเป็น ปี_เดือน_วัน&lt;/span&gt;&lt;br /&gt;log4j.appender.connectorlog.File = C:/Connector.log &lt;span style="color: rgb(51, 102, 255);"&gt;//ลงไฟลล์ชื่อ Connector.log&lt;/span&gt;&lt;br /&gt;log4j.appender.connectorlog.MaxFileSize = 10000KB &lt;span style="color: rgb(51, 102, 255);"&gt;//ขนาดไฟลล์สูงสุดคือ 10 Mb ถ้าเกินจะขึ้นไฟลล์ใหม่&lt;/span&gt;&lt;br /&gt;log4j.appender.connectorlog.layout  = org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.connectorlog.layout.ConversionPattern = ...[Temp Log]... [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6595043840957645773?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6595043840957645773/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6595043840957645773' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6595043840957645773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6595043840957645773'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/basic-config-log4j.html' title='Basic Config Log4J'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4809077596920654372</id><published>2007-06-12T16:08:00.000+08:00</published><updated>2007-06-12T16:08:01.203+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='google notebook'/><title type='text'>มาใช้ Google Notebook กันเถอะ</title><content type='html'>ไม่ใช่ เครื่อง Notebook ^_^ นะครับ มันคือกระดาษจด Online ของ Google เหมือนพวก Post-It น่ะครับ แต่อันนี้จะออนไลน์ สามารถ Export ไปเป็น Google Doc ได้ด้วย แล้วก็มี Plugin สำหรับ Firefox ให้ใช้ด้วยครับ แต่บน IE ผมไม่แน่ใจว่ามีหรือเปล่านะครับ ส่วนการสมัครก็ยังเหมือนเดิมแค่มี Account E-Mail ของ Google ก็สมัครได้แล้ว เรามาดูภาพหน้าจอคร่าวๆ กันดีกว่า&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/blog/googleNotebook02.jpg" /&gt;&lt;br /&gt;อันนี้เป็นหน้าแรกที่เราเข้ามาครับ ของผมจะมีข้อมูลอยู่ก่อนแล้ว&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;     สำหรับหน้าแรกทางซ้ายจะเป็นหัวเรื่องที่เราแยกไว้ เหมือนเป็นสมุดเล่มนึงก็ได้ แล้วด้านขวาจะเป็นข้อมูลในสมุดนั้นมีอะไรบ้างครับ สามารุแยกเป็นแผ่นๆ ได้ว่าจะแยกอะไรบ้าง จะเห็นว่าจะสามารถทำตัวหน้า ตัวสีอะไรได้ ที่จริงผมอยากให้มันแอดรูปได้จะดีมากๆ เลย&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/blog/googleNotebook03.jpg" /&gt;&lt;br /&gt;หน้าจอ ของการ Share Notebook ของเราครับ (Sharing options)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;     ซึ่งหน้านี้เราสามารถเลือกได้ว่าจะ Share กับใครบ้าง Invite ใครมา Edit ได้บ้าง ทางขวาจะเห็นลิงค์ สำหรับให้คนข้างนอกเข้ามาดูได้ครับ ลองดู&lt;a href="http://www.google.com/notebook/public/15296030075128893804/BDRZSIgoQhsqopowi"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/blog/googleNotebook01.jpg" /&gt;&lt;br /&gt;ภาพที่เราลง Plugin สำหรับ Firefox มาแล้วครับ จะอยู่มุมขวาล่าง&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;จบแล้วครับ วันหลังจะเอาตัวที่น่าสนใจมารีวิวให้ดูกันอีกครับ&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4809077596920654372?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4809077596920654372/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4809077596920654372' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4809077596920654372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4809077596920654372'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/google-notebook.html' title='มาใช้ Google Notebook กันเถอะ'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i67.photobucket.com/albums/h318/naphachara/blog/th_googleNotebook02.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1370572139761321359</id><published>2007-06-06T14:16:00.001+08:00</published><updated>2007-06-06T14:16:52.656+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Trust Certification'/><title type='text'>Config Trust Certification บน Websphere 6.1</title><content type='html'>สามารถที่จะทำได้สองวิธีคือ ไปอ่านข้อมูลจาก IP และ Port เลย หรือว่าให้เอาไฟลล์ไปวางไว้ที่ Server แล้วอ่านไฟล์ .cer นั้นน่ะครับ&lt;br /&gt;&lt;br /&gt;วิธีการทำดังนี้&lt;br /&gt;1. ไปที่เมนู Security --&gt; SSL certificate and key management&lt;br /&gt;2. คลิกที่ Key stores and certificates&lt;br /&gt;3. แล้วเลือก NodeDefaultTrustStore&lt;br /&gt;4. คลิกไปต่อที่ Signer certificates&lt;br /&gt;5. ซึ่งตรงนี้จะมีให้เลือกว่าจะ&lt;br /&gt;5.1 Retrieve from port คือให้ Websphere ไปดึงค่า Certification มาให้เลย&lt;br /&gt;5.2 Config Port คือ ให้กรอกที่อยู่ของ ไฟล์ .cer ที่อยู่ที่เครื่องมาลง&lt;br /&gt;6. แล้วก็ Restart WebServer ก็จะทำงานได้ครับ&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;หมายเหตุ อย่า Config บน Application ให้ Config บน Server เท่านั้น&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1370572139761321359?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1370572139761321359/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1370572139761321359' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1370572139761321359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1370572139761321359'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/03/config-trust-certification-websphere-61.html' title='Config Trust Certification บน Websphere 6.1'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1893302789992146094</id><published>2007-06-05T11:06:00.002+08:00</published><updated>2007-06-05T11:06:27.656+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>Config Log4j บน Websphere 6.x</title><content type='html'>โดยปกติ ถ้าใช้บน Tomcat เราไม่ต้อง Config แค่เอาไปวางไว้ใน WEB-INF มันก็จะวิ่งไปอ่าน log4j ให้แต่บน Websphere 6.x มันจะม่อ่านเราเลยต้องใช้วิธีบอกตำแหน่งให้มันอ่านเลย ซึ่งทำดังนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;&lt;strong&gt;//ไว้บอกตำแหน่งของ file log4j.properies &lt;/strong&gt;&lt;br /&gt;String log4j = getServletContext().getRealPath("/WEB-INF/log4j.properties");&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;//Config Properties File ว่าอ่านที่ตรงนี้ &lt;/strong&gt;&lt;br /&gt;PropertyConfigurator.configure(log4j); &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;หมายเหตุ&lt;/strong&gt; ถ้าใช้วิธีนี้จะทำให้ทั้ง Server ใช้ Config นี้ทั้งหมดเพราะฉะนั้นจะต้องเอา Config ของทุก Application มาไว้ใน lo4j.properties ที่เดียวกัน&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-1893302789992146094?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/1893302789992146094/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=1893302789992146094' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1893302789992146094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/1893302789992146094'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/config-log4j-websphere-6x.html' title='Config Log4j บน Websphere 6.x'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8174816828338948888</id><published>2007-06-05T11:06:00.001+08:00</published><updated>2007-06-05T11:06:16.205+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Connection Timout'/><title type='text'>วิธี Config Timeout สำหรับ Connection</title><content type='html'>สำหรับคนที่ใช้ JDK 1.5 ขึ้นไปสามารถที่จะ Config Timeout ได้เลยครับ เพราะจะมีให้ Config อยู่แล้ว แต่สำหรับ เวอร์ชั่นต่ำกว่านั้น จะไม่มีให้ Config จะต้องไปใช้ Library ตัวอื่นในการส่งแทนครับ เช่น &lt;a href="http://jakarta.apache.org/commons/httpclient/"&gt;httpclient&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8174816828338948888?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8174816828338948888/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8174816828338948888' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8174816828338948888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8174816828338948888'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/06/config-timeout-connection.html' title='วิธี Config Timeout สำหรับ Connection'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-9021715508342519690</id><published>2007-05-29T15:31:00.000+08:00</published><updated>2007-05-29T15:31:11.356+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reader'/><category scheme='http://www.blogger.com/atom/ns#' term='google reader'/><category scheme='http://www.blogger.com/atom/ns#' term='opml'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='feed'/><category scheme='http://www.blogger.com/atom/ns#' term='rss'/><title type='text'>มาใช้ Google Reader กันเถอะ</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;คราวนี้มาแนะนำ Product Google กันอีกตัวครับ &lt;a title="Google Reader" href="https://www.google.com/reader/view/"&gt;Google Reader&lt;/a&gt; (แนะนำว่าต้องเข้าด้วย https ครับ ถ้าไม่เข้าแบบนี้น่ามันจะ Error ครับ) เป็น Rss Feed สำหรับไว้อ่านข่าวสารเวบที่เปิด rss ไว้ได้ เช่น exteen.com, blogspot.com เป็นต้นครับ ข้อสำคัญสำหรับเวบบางอันที่โดน บล็อกไป ถ้ามี Rss Feed เราก็สามารถอ่านข้อมูลได้ครับ อย่าง Blogspot สำหรับ Net TOT ก็ทำให้เข้าไปอ่านข้อมูลได้ครับ สะดวกดีเหมือนกัน แล้วก็สามารถเอา File OPML มาอัพโหลดลงไปเพื่อเราสามารถจะดูที่เราเก็บไว้ใน Favorite อย่าง Exteen.com (จะมีอยู๋ข้างล่างอ่ะครับ ให้ Save File ออกมาเป็น OPML เลย แล้วมาอัพโหลดที่ Google Reader ได้เลยครับ ก็จะมีข้อมูลทั้งหมดของเราที่ทำ Favorite ไว้มาอยู่ที่นี่ทั้งหมด)&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ขั้นตอนการสมัครก็แสนง่ายมีเพียง E-Mail ของ GMail เท่านั้นก็สามารถสมัครได้แล้วครับ&lt;br /&gt;&lt;br /&gt;&lt;b&gt;มาดูหน้าตากันดีหว่า&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1. จากภาพข้อมูลจะถูกแบ่งเป็นส่วนโดยด้านซ้ายจะเป็นที่เราไว้จัดการข้อมูลต่าง ส่วนด้านขวาเป็นข้อมูลของ Rss Feed&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/blog/View.jpg" /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;ข้อมูลด้านซ้ายทีน่าจะรู้มีดังนี้&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Home จะเป็นหน้าแรกของ Reader โดยด้านซ้ายจะเป็น Preview ให้ดูเป็นหัวข้อ กับ Blog สักสองสามอัน จะมี trends ด้วย คือดูว่าเราเข้าไปดูเวบไหนมาหรือว่ามีการดูลักษณะ เป็นอย่างไร &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- All Items จะดูข้มูลทั้งหมดที่มีการ Feed อยู่ (มี Expand View คือจะดูรายละเอียดทั้งหมด กับ List View จะดูข้อมูลเป็นหัวข้อไปแล้วค่อยคลิกเข้าไปดูที่หลังอีกที)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2. หน้า Management Subscriptions ซึ่งที่คลิกจะอยู่ข้างล่างทางขวามือครับ ไว้สำหรับจะดูการอะไรต่างของเรา หน้าต่างดังข้างล่าง&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/blog/Management.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Subscriptions ไว้จัดการ Feed เราต่างๆ ว่าจะให้อยู่ในหมวดหมู่ไหน จะลบทิ้งหรือเปลี่ยนชือแล้วแต่&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Tags ไว้จัดการหมวดหมูขางเราที่สร้างขึ้นว่าจะให้เป็น Public หรือเปล่า คือให้คนอื่นสามารถเข้ามาได้หรือเปล่า หรือว่า Private สำหรับให้เราดูได้คนเดียวครับ&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Goodies น่าจะเป็ฯช่วยเหลืออะไรๆ ง่ายขึ้นอ่ะครับ ซึ่งที่เห็นๆ มีอยู่ อันแรกก็เป็น gadget สำหรับ IGoogle (ถ้ามีเวลาจะอธิบายไว้ใน Entry ต่อๆ ไปครับ ว่ามันคืออะไร) , Add Bookmark สำหรับ Tag เราแล้วเข้ามาดูที่เดียวได้เลยว่ามีอะไรอัพเดทบ้าง, ดูบนมือถือได้&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Import/Export ไว้สำหรับImport/Export File OPML สำหรับ Rss Feed ที่เรามีจากที่อื่น หรือเอาจากที่นี่ออกไปข้างนอกน่ะครับ อย่าง Exteen.com ก็จะมี File OPML เหมือนกัน ก็เอาจากอันนั้นมา Add ใส่ที่นี่ไว้ได้ทำให้เราได้ข้อมูล Favorite มาใช้ดูบนนี้ได้ครับฃ&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Preferences Config สำหรับ Google Reader ครับ&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-9021715508342519690?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/9021715508342519690/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=9021715508342519690' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/9021715508342519690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/9021715508342519690'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/google-reader.html' title='มาใช้ Google Reader กันเถอะ'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i67.photobucket.com/albums/h318/naphachara/blog/th_View.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-8700299155191254838</id><published>2007-05-29T15:30:00.002+08:00</published><updated>2007-05-29T15:30:56.546+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google analyics'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>มาใช้ Google Analytics กันเถอะ ตอนที่ 2 มีอะไรบ้างให้ใช้บ้าง</title><content type='html'>&lt;p&gt;     มาดูกันว่ามีอะไรบ้างครับ มันมีเยอะมากๆ ผมเลยอธิบายคร่าวๆ แล้วรูปบ้างส่วนนะครับ ที่จริงผมก็ยังใช้ไม่หมดของมันเลยอ่ะ บางอันก็ยังไม่รู้ ใครรู้ช่วยบอกด้วยครับ&lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Dashboard&lt;/span&gt; จะเป็นภาพรวมทั้งหมดซึ่งเราสามารถที่จะเอาส่วนอื่นๆ มาไว้ที่นี่ได้ครับ จะมีปุ่มให้ add ลงมาที่ Dashboard ตอนสุดท้ายแล้วครับ&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Save Reports&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Visitors Overview&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Traffics Sources Overview&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Map Overlay&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Content Overview&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview01.jpg" /&gt;&lt;br /&gt;ภาพของ Dashboard &lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Visitors&lt;/span&gt;&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Overview&lt;/span&gt;&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Map Overlay&lt;/span&gt; จะบอกเราได้ว่ามีใครเข้าเวบเราจากที่ไหนบ้างเป็นแผนที่ให้คลิกเข้าไปดู&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- New VS. Returning&lt;/span&gt; เปรียบเทียบข้อมูลระหว่างคนที่มาเข้ามาชมคนเก่า หรือคนใหม่&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Languages&lt;/span&gt; ภาษาของเครื่องคนที่เข้ามาใช้ภาษาอะไร&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Visit Trending&lt;/span&gt;&lt;br /&gt;      &lt;span style="FONT-WEIGHT: bold"&gt;- Visits&lt;/span&gt; สถิติผู้เข้ามาเยี่ยมชมทั้งหมด&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Absolute Unique Visitors &lt;/span&gt;สถิติผู้เข้าเยี่ยมชมครั้งแรก&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Pageviews&lt;/span&gt; มีคนดูหน้าเพจไปกี่ครั้ง&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Average Pageviews&lt;/span&gt; ค่าเฉลี่ยคนเยี่ยม หน้าเพจ/คนเยี่ยมชม&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Time On Site&lt;/span&gt; เวลาเฉลี่ยในการเยี่ยมชมเวบไซต์เรา&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Bounce Rate&lt;/span&gt; คืออะไรหว่า อันนี้ไม่รู้อ่ะครับ&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Visitor Loyalty&lt;/span&gt;&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Loyalty&lt;/span&gt; สถิคิคนมาเยี่ยมเวบเราซ้ำกี่ครั้ง&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Recency&lt;/span&gt; สถิติคนมาเยี่ยมชมเวบเราครั้งสุดท้ายเมื่อไร&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Length of Visit&lt;/span&gt; เข้ามาเวบเราแล้วอยู่นานเท่าไร&lt;br /&gt;      &lt;span style="FONT-WEIGHT: bold"&gt;- Depth of Visit&lt;/span&gt; เข้ามาเวบเราแล้วเข้าไปกี่เพจ&lt;br /&gt;     &lt;span style="FONT-WEIGHT: bold"&gt;- Browser Capabilities&lt;/span&gt;&lt;br /&gt;          &lt;span style="FONT-WEIGHT: bold"&gt;- Browsers&lt;/span&gt; ใช้ Browser อะไรในการเข้า&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Operating Systems&lt;/span&gt; ใช้ OS อะไรในการเข้า&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Browsers and OS &lt;/span&gt;ใช้ Browser อะไรกับ OS ตัวไหน&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Screen Colors &lt;/span&gt;สี่ที่ใช้ที่เครื่องเป็นกี่บิต&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Screen Resolutions&lt;/span&gt; ควมละเอียดของหน้าจอ&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Flash Versions&lt;/span&gt; ใช้ Flash Version อะไร&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Java Support&lt;/span&gt; สถิติคนที่เข้าเวบเราแล้ว Support Java หรือ ไม่ Support Java&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Network Properties&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Network Location&lt;/span&gt; ใช้ Internet ของอะไรในการเข้า&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Hostnames&lt;/span&gt; ที่เข้ามา อันนี้งง&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - Connection Speeds&lt;/span&gt; ความเร็วของ Internet ที่ใช้&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;          - User Defined&lt;/span&gt; ไม่รู้อ่ะครับ อันนี้&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview02_Visitors.jpg" /&gt;&lt;br /&gt;ภาพของ Overview Visitors &lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Traffic Source&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Overview&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Direct Traffic&lt;/span&gt; คนที่เข้ามาเยี่ยมชมเวบโดยเข้ามาตรงๆ เลย (พิพม์ URL เข้ามาเลย) อันนี้ผมไม่แน่ใจว่ารวมพวกที่เข้ามาจากพวก Rss Reader หรือเปล่าน่ะครับ&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Referring Sites&lt;/span&gt; เข้าจากเวบไหนถึงเข้ามาที่เวบเราได้ จะไม่รวมพวก Search Engine&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Search Engines&lt;/span&gt; ที่ใช้เข้ามาหาเวบเรา&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - All Traffic Sources &lt;/span&gt;รวมทั้งหมดว่าเข้ามาเวบเราด้วยอะไร&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Keywords&lt;/span&gt; คำที่ใช้ในการคนหาแล้วมาถึงเวบเรา&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt; &lt;/span&gt;อันนี้ผมไม่พูดถึงนะครับ เพราะ รู้สึกมันจะไปผูกกับ Google adwords อ่ะ ผมไม่เคยใช้เหมือนกัน&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Campaigns&lt;/span&gt; ไม่รู้อ่ะครับ&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Ad Versions&lt;/span&gt; ไม่รู้อีกล่ะ&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview03_TrafficSources.jpg" /&gt;&lt;br /&gt;ภาพของ Overview Visitors &lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Content&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Overview&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Top Content&lt;/span&gt; สถิติคนเข้ามาเยี่ยมเวบเราที่ Page ไหนบ้าง&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Content by Title &lt;/span&gt;เหมือน Top Content แต่อันนี้ดูตาม Title ของเวบเรา&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Content Drilldown&lt;/span&gt; เหมือนจะดูตามลิงค์เข้าไปอีกขั้นนึงอ่ะครับ ถ้าอย่าง exteen ก็จะเป็นวันอ่ะครับ&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Top Landing Pages&lt;/span&gt; เป็น Page ที่ผู้เยี่ยมชมเข้ามาเลยอ่ะครับ งงเหมือนกัน น่าจะเป็นหน้าแรกที่เข้ามา&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Top Exit Pages&lt;/span&gt; เป็น Page หน้าสุดท้ายที่เขามาก่อนเขาจากไป&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Site Overlay&lt;/span&gt; ไม่แน่ใจว่าบอกเราว่า คนที่มาเยี่ยมเวลาเราไปคลิกตรงไหนบ้าง หรือเปล่าอ่ะครับ&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview04_Content.jpg" /&gt;&lt;br /&gt;ภาพของ Overview Visitors &lt;/p&gt;&lt;p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Goals &lt;/span&gt;ผมไม่ได้ใช้อันนี้เลยอ่ะ น่าจะเป็นการตั้งเปาหมายของเวบเราว่าจะได้อะไรเมื่อไร ได้ถึงเป้าหมาหรือเปล่า&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Overiew&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Total Conversions&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Conversion Rate&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Abandoned Funnels&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Goal Value&lt;/span&gt;&lt;br style="FONT-WEIGHT: bold" /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;     - Funnel Visualization&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="FONT-WEIGHT: bold"&gt;หมายเหตุ&lt;/span&gt; &lt;br /&gt;     1. ค่าของสถิติเราสามารถดูได้หลายแบบ เช่น กราฟวงกลม กราฟแท่ง เป็นต้น มีตามดังรูป&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview08_view.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;     2. สามารถเลือว่าจะวิว Page เป็นของอะไร ดังรูป&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview07_Pageview.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;     3. สามารถ Export ข้อมูลเก็บไว้ได้หลายหลายรูปแบบ ดังรูป&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview05_Export.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;     4. สามารถ Compare Date ได้ว่าจะเอาตั้งแต่วันไหนถึงวันไหน&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/Preview05_CompareDate.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;     5. ข้อมูลสามารถเข้าไปดูรายละเอียดปลีกย่อยแต่ละอันได้เลยว่ามีคนเข้าเท่าไร คนใหม่เท่าไรครับ เช่น Referal จะดูได้เลยเป็นอันๆ เลย&lt;br /&gt;     6. ข้อมูลรู้สึกว่าจะช้าไป 1 วันนะครับ&lt;br /&gt;     7. ดูตอนที่ 1 ได้&lt;a href="http://yashima.exteen.com/20070522/google-analytics-1"&gt; ที่นี่ &lt;/a&gt;ครับ &lt;br /&gt;     8. อาจจะมีบั๊กอยู่บ้างอ่ะครับในกรณีที่มีหลาย Account บางทีเข้า Account นี้อยู่แต่พอคลิกเลือกดันไปเข้าอีก Account นึงให้ &lt;p /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-8700299155191254838?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/8700299155191254838/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=8700299155191254838' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8700299155191254838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/8700299155191254838'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/google-analytics-2.html' title='มาใช้ Google Analytics กันเถอะ ตอนที่ 2 มีอะไรบ้างให้ใช้บ้าง'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-2902661794227860775</id><published>2007-05-29T15:30:00.001+08:00</published><updated>2007-05-29T15:30:43.313+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google analyics'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>มาใช้ Google Analytics กันเถอะ ตอนที่ 1 ขั้นตอนการสมัครสมาชิก</title><content type='html'>&lt;span style="FONT-WEIGHT: bold"&gt;Google Analytics&lt;/span&gt; คือ เวบที่เห็บสถิติ เพื่อเราสามารถนำค่าที่้่เก็บไปวิเคราะห์ได้ว่า เราควรจะทำเวบไปในทางใดครับ ซึ่งมีข้อมูลมากมาย เช่น ข้อมูลว่าส่วนใหญ่เข้าเวบเราจากทางไหน ใช้ความละเอียดหน้าจอขนาดไหน ใช้ Browser อะไรบ้าง เป็นต้น และสามารถ Export ข้อมูลออกมาได้เป็น PDF, XML,CSV,TSV ครับ &lt;span style="FONT-WEIGHT: bold"&gt;ที่สำคัญฟรีครับ &lt;/span&gt;(รู้สึก&lt;a href="http://phuphu.exteen.com/" target="_blank"&gt;คุณภ&lt;/a&gt;ู่เคยแนะนำแล้วตั้งแต่มันยังเป็น Beta น่ะครับ แต่ตอนนีเปิดให้ใช้ได้หมดแล้ว)&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;1. เราต้องมี E-Mail ของ GMail ซะก่อนถึงจะใช้งานได้นะครับ&lt;br /&gt;2. เราก็ทำการ Sign-Up &lt;a href="https://www.google.com/analytics/home/?hl=en" trget="_blank"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/SignUp_resize.jpg" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/SignUp_01_resize.jpg" /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;ให้กรอกข้อมูล Website ของเรา&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/SignUp_02_resize.jpg" /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;กรอกข้อมูลของตัวเราครับ&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/SignUp_03_resize.jpg" /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;เป็น Agreement&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://i67.photobucket.com/albums/h318/naphachara/SignUp_04_resize.jpg" /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;ต่อไปเราจะได้ Code ที่เราต้องเอาไปใส่ที่เวบของเราครับ&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;3. สำหรับ Exteen.com จะเอา Script ไปใส่ไว้ในข่องของ Link ได้เลยครับ เป็นอันใช้ได้ (แต่ต้องเอาข้อมูลทั้งหมดมาต่อเป็บรรทัดเดียวนะครับ ถึงจะใช้ได้)&lt;br /&gt;&lt;br /&gt;จบแล้วครับ ตอนต่อไปมาดูกันว่า Google Analytics มีอะไรให้ใช้บ้าง&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;p align="center"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="FONT-WEIGHT: bold"&gt;&lt;span style="FONT-WEIGHT: bold"&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-2902661794227860775?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/2902661794227860775/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=2902661794227860775' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2902661794227860775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/2902661794227860775'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/google-analytics-1.html' title='มาใช้ Google Analytics กันเถอะ ตอนที่ 1 ขั้นตอนการสมัครสมาชิก'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5379304807473019964</id><published>2007-05-24T15:42:00.002+08:00</published><updated>2007-05-24T15:42:43.308+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem AJAX'/><title type='text'>วิธีแก้ปัญหา Cache บน AJAX</title><content type='html'>ปัญหาของ AJAX อย่างนึงคือมันมีการเก็บ Cache เลยทำให้เวลาเราไปเรียก AJAX แล้วบางทีจะไม่ได้ข้อมูลที่ Refresh ใหม่เสมอ มีวิธีแก้ไขดังนี้&lt;br /&gt;1. ลอง Config Meta บน html file ให้ไม่มีการเก็บ Cache โดยเพิ่มข้อมูลดังนี้&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;&amp;lt;META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"&amp;gt;&lt;br /&gt;&amp;lt;META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;2. ใช้วิธี Generate DateTime ต่อท้าย Link ที่ไปเรียกทำให้คิดว่าเป็นคนละ URL กัน ก็จะแก้ไขได้ เช่นเพิ่ม new Date(); ลงไป ต่อข้างหลัง&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ข้อมูลเพิ่มเติมครับ&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://radio.javaranch.com/pascarello/2005/10/21/1129908221072.html"&gt;http://radio.javaranch.com/pascarello/2005/10/21/1129908221072.html&lt;/a&gt; มาจาก Mail ที่บริษัทครับ&lt;br /&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.i18nguy.com/markup/metatags.html"&gt;http://www.i18nguy.com/markup/metatags.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.webperformance.org/caching/"&gt;http://www.webperformance.org/caching/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5379304807473019964?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5379304807473019964/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5379304807473019964' title='1 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5379304807473019964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5379304807473019964'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/cache-ajax.html' title='วิธีแก้ปัญหา Cache บน AJAX'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6809452000914042433</id><published>2007-05-24T15:42:00.001+08:00</published><updated>2007-05-24T15:42:20.948+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web.xml'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem RAD 6.0'/><title type='text'>ปัญหาการ Config web.xml ใน RAD 6.0</title><content type='html'>1. ปัญหา Servlet ไม่ยอม Load On Start up --&gt; แก้ได้โดย เปลี่ยน Load On Start up = 0 แทน เพราะเวลาเราสร้าง Default ของ RAD 6.0 จะเป็น -1 ซึ่งบาทีมันจะไม่ start up ให้เลยต้องเปลี่ยนเป็น 0 แทนถึงจะทำการ start up ได้&lt;br /&gt;2. ปัญหาเราเขียน Config เพิ่มใน web.xml แล้วทำไม มันไม่รัน --&gt; แก้โดยเราต้อง Config ผ่านหน้าจอของมันเอง อย่า Config ผ่าน Editor เพราะว่าบางทีแค่เว้นวรรค RAD 6.0 ก็อ่านไม่ได้แล้ว ล้วบางอย่างจะ Config ไม่เหมือนปกติทัวไปด้วยครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6809452000914042433?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6809452000914042433/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6809452000914042433' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6809452000914042433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6809452000914042433'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/config-webxml-rad-60.html' title='ปัญหาการ Config web.xml ใน RAD 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4174095127705305677</id><published>2007-05-23T14:23:00.000+08:00</published><updated>2007-05-23T14:23:02.326+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resource Bundle Editor'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse Plugin'/><title type='text'>Eclipse Plugin -Resourcebundle Editor</title><content type='html'>เป็น Plugin สำหรับ Eclipse ทำให้เขียนข้อมูลที่เป็น Unicode หรือ อ่านได้โดยไม่ต้องใช้ตัวแปลงอ่ะครับ อ่านจาก Eclipse ได้เลย โหลดได้ &lt;a href="http://www.resourcebundleeditor.com/" target="_blank"&gt;ที่นี่&lt;/a&gt; ครับ&lt;br /&gt;หลังจากโหลดเสร็จแล้วก็คลาย File Zip แล้วนำไปวางที่ Folder plugin ก็จะสามารถใช้งานได้&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp2.blogger.com/_OyrxYulzYnY/RlPc-NfteEI/AAAAAAAAAc4/Rk4tWJgDNE0/s1600-h/02.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067636967054604354" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_OyrxYulzYnY/RlPc-NfteEI/AAAAAAAAAc4/Rk4tWJgDNE0/s320/02.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;จะเห็นว่าอ่านภาษาไทยได้&lt;/p&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_OyrxYulzYnY/RlPc5dfteDI/AAAAAAAAAcw/UbBTQ2auG3s/s1600-h/01.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067636885450225714" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_OyrxYulzYnY/RlPc5dfteDI/AAAAAAAAAcw/UbBTQ2auG3s/s320/01.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;แล้วถ้าดูแบบ editor ปกติก็จะเห็ฯว่ามัน Convert เป็น Unicode ให้เรียบร้อยแล้ว&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4174095127705305677?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4174095127705305677/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4174095127705305677' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4174095127705305677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4174095127705305677'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/eclipse-plugin-resourcebundle-editor.html' title='Eclipse Plugin -Resourcebundle Editor'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_OyrxYulzYnY/RlPc-NfteEI/AAAAAAAAAc4/Rk4tWJgDNE0/s72-c/02.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4561857205236374253</id><published>2007-05-16T21:35:00.000+08:00</published><updated>2007-05-16T21:35:33.042+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Trust Certification'/><title type='text'>วิธีการเอา .cer จาก Website โดยใช้ IE</title><content type='html'>1. ให้เข้าเวบที่ต้องการจะเอา&lt;br /&gt;2. เลือก File แล้วไปที่ Properties&lt;br /&gt;3. คลิกที่ Certificates&lt;br /&gt;4. เลือกที่ Tab Detail แล้วคลิกที่ Copy To File&lt;br /&gt;5. ให้เลือกเป็น Base-64 encoded X.509 แล้วเซฟออกมาใช้งานได้เลยครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4561857205236374253?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4561857205236374253/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4561857205236374253' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4561857205236374253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4561857205236374253'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/cer-website-ie.html' title='วิธีการเอา .cer จาก Website โดยใช้ IE'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7877967423597218619</id><published>2007-05-08T16:20:00.000+08:00</published><updated>2007-05-08T16:20:42.920+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java SNMP'/><category scheme='http://www.blogger.com/atom/ns#' term='SNMP4J'/><title type='text'>การเขียน SNMP Trap โดยใช้ Java</title><content type='html'>โดยจะใช้ Library จาก &lt;a href="http://www.snmp4j.org/"&gt;ที่นี่&lt;/a&gt;&lt;br /&gt;ซึ่งบางทีเวลาเราเขียน Web Application ระบบเราจะต้องส่ง SNMP Trap เพื่อไปบอก System นึงว่ามี error ในระบบเรา ซึ่ง System นั้น จะเป็น Network Monitoring เพื่อดูทั้งหมด&lt;br /&gt;&lt;strong&gt;SNMP(Simple Network Management Protocol)&lt;/strong&gt; เป็น protocol ที่ช่วยในการจัดการด้านเครื่อข่าย และรวบรวมข้อมูลต่างๆ จากเครืองอื่นภายในเครื่อข่าย ซึ่งโดยปกติแล้ว อุปกรณ์ในเครือข่ายจะมีการส่ง SNMP Broadcast ออกมาอยู่แล้ว&lt;br /&gt;&lt;br /&gt;วิธีการเขียนจะอยู่ตามใน Document อยู่แล้วครับ &lt;br /&gt;ลองดู &lt;a href="http://www.snmp4j.org/doc/org/snmp4j/Snmp.html"&gt;ที่นี่&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7877967423597218619?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7877967423597218619/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7877967423597218619' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7877967423597218619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7877967423597218619'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/05/snmp-trap-java.html' title='การเขียน SNMP Trap โดยใช้ Java'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-6816349237939034842</id><published>2007-05-02T16:45:00.000+08:00</published><updated>2007-05-02T16:45:24.545+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Trust Certification'/><title type='text'>Config Certification On Application</title><content type='html'>วิธีการ Config SSL บน Application ของเราเอง ซึ่งไมควรจะทำนอกจากจะเทสที่เครื่องของตัวเอง แต่พอขึ้น Production หรือ Develop Server นั้นให้ปิดแล้ว Config ที่ Server เอาเท่านั้น&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;System.setProperty("javax.net.ssl.trustStore", trustStoreFile);&lt;br /&gt;System.setProperty("javax.net.ssl.trustStorePassword", trustStorePwd);&lt;br /&gt;System.setProperty("javax.net.ssl.keyStore", keyStoreFile);&lt;br /&gt;System.setProperty("javax.net.ssl.keyStorePassword", keyStorePwd);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;สำหรับ Config บน Websphere 6.1 ทำตามนี้ &lt;a href="http://yashima.blogspot.com/2007/03/config-trust-certification-websphere-61.html"&gt;Config Trust Certification บน Websphere 6.1 &lt;/a&gt;&lt;br /&gt;ปล. สำหรับ Websphere จะใช้ Password : WebAS และ Path จะอยู่ที่ xxx/etc (ไฟลล์จะชื่อ DummyServerTrustFile.jks และ DummyServerKeyFile.jks)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-6816349237939034842?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/6816349237939034842/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=6816349237939034842' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6816349237939034842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/6816349237939034842'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/config-certification-on-application.html' title='Config Certification On Application'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-5711866748611966118</id><published>2007-05-02T16:42:00.000+08:00</published><updated>2007-05-02T16:42:21.657+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WID 6.02'/><title type='text'>วิธีแก้ปัญหาการไม่อ่าน Library ของ WID 6.0</title><content type='html'>แก้ปัญหาการไม่อ่าน Library ให้เอาไฟลล์ Jar ไปวางไว้ที่ Path ของ Server เลย ซึ่งจะเป็นประมาณ xxx\60x\runtimes\bi_v6\lib แล้วทำการ Restart Server Library ตัวนั้นก็จะถูกอ่านขึ้นมาได้&lt;br /&gt;ปล. อาจจะมีวิธีทำวิธีอื่นที่ดีกว่านี้ก็ได้นะครับ เพราะผมเอไฟลล์ Jar ไปวางไว้ใน Project ก็ยังไม่ได้น่ะครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-5711866748611966118?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/5711866748611966118/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=5711866748611966118' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5711866748611966118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/5711866748611966118'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/library-wid-60.html' title='วิธีแก้ปัญหาการไม่อ่าน Library ของ WID 6.0'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-375209700022586513</id><published>2007-04-30T18:49:00.001+08:00</published><updated>2008-05-09T16:49:40.017+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Config Certification'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>Add Certification บน Websphere 6.0x (Windows)</title><content type='html'>บน Websphere 6.0x นั้นจะไม่มีเมนู Add บน Websphere Admin Console แต่เราจะต้อง Add บน ikeyman โดยมีขั้นตอนดังนี้&lt;br /&gt;1. หาไฟลล์ ikeyman.bat แล้วทำการรัน ขึ้นมาโดยไฟลล์จะอยู่ที่ directory bin&lt;br /&gt;2. หลังจากรันขึ้นมาแล้ว ให้ เปิดไฟลล์ ที่ชื่อ DummyServerTrustFile.jks และ DummyServerKeyFile.jks โดยขั้นตอนการ add จะเหมือนกันทั้งสองไฟลล์ (จะอยู่ใน Folder xxx/etc)&lt;br /&gt;3. Password : WebAS ซึ่งเป็น default&lt;br /&gt;4. ตรง Key database content ให้เลือกเป็น Signer Cerfiticates&lt;br /&gt;5. แล้วทำการ Add ไฟลล์ cer เข้าไป&lt;br /&gt;6. ให้ทำทั้งสองไฟลล์หลังจากทำเสร็จให้ Restart Server ก็จะใช้งานได้&lt;br /&gt;7. ในกรณีที่ Add แล้วมันยังไม่ได้ให้ใช้วิธีเซ็ตค่าลงบน Application เลย &lt;a href="http://yashima.blogspot.com/2007/04/config-certification-on-application.html"&gt;ตามนี้&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-375209700022586513?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/375209700022586513/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=375209700022586513' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/375209700022586513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/375209700022586513'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/add-certification-websphere-60x.html' title='Add Certification บน Websphere 6.0x (Windows)'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4477049067655274928</id><published>2007-04-30T00:00:00.001+08:00</published><updated>2007-04-30T00:00:30.744+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.0x'/><title type='text'>ปัญหา SSL เวลา Cert หมดอายุ</title><content type='html'>อาการที่เป็นแบบนี้เพราะว่าเซ็ต Locale เป็น Thai ให้เปลี่ยน Locale ของเครื่องเป็น English แล้วจะหาย (ในกรณีที่ Start Server ไม่ขึ้นด้วยเหมือนกัน)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4477049067655274928?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4477049067655274928/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4477049067655274928' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4477049067655274928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4477049067655274928'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/ssl-cert.html' title='ปัญหา SSL เวลา Cert หมดอายุ'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-7242940844672222492</id><published>2007-04-27T18:50:00.002+08:00</published><updated>2008-04-23T15:26:26.088+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheduler'/><title type='text'>ปัญหา Scheduler บน Websphere 6.1 ในกรณีที่มีหลาย Server</title><content type='html'>เป็นปัญหาที่พบเวลาเรา Deploy Application แล้วทำ Scheduler น่ะครับ โดยไปดูได้ที่ Table xxx__SCHED_LMGR&lt;br /&gt;Column LEASEOWNER ให้เป็น Server ที่ถูกต้องถ้าผิดให้ลบแล้ว Commit แล้ว Refresh ดูจนกว่าจะถูก Server ถ้ายังไม่ถูกก็ลบไปเรื่อยๆ&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;เิ่พิ่มเติม&lt;/span&gt; สามารถแก้ได้โดยให้ Scope ของ Sheduler อยู่บน Application Server เลยครับ ก็จะหาย (ได้จากคนอื่นเทสให้ครับ)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-7242940844672222492?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/7242940844672222492/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=7242940844672222492' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7242940844672222492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/7242940844672222492'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/scheduler-websphere-61-server.html' title='ปัญหา Scheduler บน Websphere 6.1 ในกรณีที่มีหลาย Server'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-29830133901452733</id><published>2007-04-19T18:09:00.000+08:00</published><updated>2007-04-19T18:09:50.013+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem Application Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Problem Web Server'/><title type='text'>วิธีแก้ปัญหาพื้นฐานเวลาทำไมหน้า Web ถึงไม่ขึ้น</title><content type='html'>1. ตรวจสอบก่อนว่า Application ทำงานหรือยัง&lt;br /&gt;&lt;br /&gt;2. ตรวจสอบโดยวิ่งเข้าหน้าเวบผ่านทาง Application Server (ถ้า Default Port จะเป็น 9080) ถ้ายังไม่ได้แสดงว่า Application ยังมีปัญหาในการ Deploy อยู่ (ในบางกรณีเวลา Deploy เสร็จแล้วอาจจะต้องรอข้อมูลให้ Sync กันระหว่าง Application Server หลายตัว เราจะต้องทำการเทสทุกเครื่องที่มีในระบบ เพราะอาจจะเกิดกรณีที่ว่า ข้อมูลของ Application Server ไม่ Sync ขึ้นได้แค่บางเครื่อง&lt;br /&gt;&lt;br /&gt;3. ถ้าทำในข้อ 2 สำเร็จแล้วให้ตรวจสอบในส่วนของ Web Server ว่ารันขึ้นหรือยัง ถ้ายังให้ทำการ Start Web Server ซึ่งสามารถทำผ่านหน้า Admin Console ได้เลย&lt;br /&gt;&lt;br /&gt;4. หลังจากทำผ่านข้อ 2 แล้วในกรณีที่เป็น Application ใหม่ พึ่ง Install ลง Server ครั้งแรก ให้ทำการ Propogate,Generate Plugin ที่ตรง Web Server ซึ่งพอเสร็จแล้วต้อง Success ทั้งสองอย่าง (คือการทำให้ Web Server กับ Application Server Sync ข้อมูลกัน)&lt;br /&gt;&lt;br /&gt;5. ในกรณีที่ไม่ Success อาจจะเกิดจากกรณีที่ระบบเขายังไม่ได้ Grant สิทธิ์ของ Web Sphere Admin ในการเข้าไปเปลี่ยนข้อมูลใน Folder ที่ Config ให้ไปเพิ่มสิทธิ์ในการเข้าถึงบน Unix ก็จะทำงานได้&lt;br /&gt;&lt;br /&gt;6. ให้ไปตรวจสอบข้อมูลที่ไฟลล์ plugin-cfg.xml ว่ามีการ Map Context Root ลงไปหรือเปล่า โดยจะมีข้อมูลคล้ายตัวอย่างข้างล่างนี้&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;strong&gt;Example &lt;/strong&gt;&lt;br /&gt;&amp;lt;Uri AffinityCookie="JSESSIONID"AffinityURLIdentifier="jsessionid" Name="/mer/MGWWebService/*" /&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;7. ในกรณีที่ไม่มีข้อมูลนั้น (น่าจะเป็นจากการที่ว่าเรามี Application Server, Web Server แยกกันคนละเครื่อง แล้วมีมากกว่า 1 เครื่อง) ให้ทำดังนี้&lt;br /&gt;&lt;span style="margin-left:20.0pt;"&gt;1. ให้ไปที่เมนู Environment --&gt; Update global Web server plug-in configuration แล้วทำการกดปุ่ม OK ซึ่งจะทำการ Update Config Context Root ทั้งหมด ถ้าไม่แน่ใจ ลองกด &lt;u&gt;View or download the current Web server plug-in configuration file&lt;/u&gt; เพื่อดูว่ามีจริงหรือไม่ แต่โดยปกติมันต้องมีข้อมูลอยู่&lt;/span&gt;&lt;br /&gt;&lt;span style="margin-left:20.0pt;"&gt;2. เมื่อทำเสร็จแล้วให้ไปทำการ Generate Plugin กับ Propagate Plugin อีกทีนึง แล้วทำการตรวจสอบดูว่ามีแล้วหรือไม่ตามข้อ 6&lt;/span&gt;&lt;br /&gt;&lt;span style="margin-left:20.0pt;"&gt;3. ถ้ายังไม่มีให้ใช้วิธีการ Copy ข้อมูลไปเพิ่มในไฟลล์ plugin-cfg.xml (โดยดู Path ว่าอยู่ที่ไหนได้จากตอน propagate Plugin บอกประมาณว่า จาก ที่ไหนไปไหนให้ Copy ไปทับตรงจาก Example Path --&gt; /data/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/ PBITAPPDEV01Cell01/nodes/ihsnode03/servers/webserver1/plugin-cfg.xml)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;margin-left:20.0pt;"&gt;&lt;strong&gt;หมายเหตุ&lt;/strong&gt; วิธีการเพิ่มข้อมูลเองไม่ควรจะทำเพราะว่า ถ้าเรา Generate Plugin ใหม่ข้อมูลที่เพิ่มจะหายไป ต้องการวิธีแก้ที่ Websphere&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8. ตรวจสอบอีกทีว่าหน้าเวบขึ้นได้หรือไม่ (เช็คที่วงแลนเดียวกัน)&lt;br /&gt;&lt;br /&gt;9. ในกรณีที่วิ่งจาก Internet หรือ Intranet แล้วยังไม่ได้จากข้อ 6 ต้องตรวจสอบตัว Reverse Proxy, Load Balance, …. ดูว่าได้มีการ Config ผิดหรือไม่ถึงยังไม่สามารถจะไปที่หน้าเวบนั้นได้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-29830133901452733?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/29830133901452733/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=29830133901452733' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/29830133901452733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/29830133901452733'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/web.html' title='วิธีแก้ปัญหาพื้นฐานเวลาทำไมหน้า Web ถึงไม่ขึ้น'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-4731003357512520435</id><published>2007-04-17T14:55:00.000+08:00</published><updated>2007-04-17T14:55:59.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Server'/><title type='text'>Example Config Network (For Web Server and Application Server)</title><content type='html'>&lt;div style="TEXT-ALIGN: center"&gt;&lt;a href="http://bp3.blogger.com/_OyrxYulzYnY/RiRvHXIAs7I/AAAAAAAAARE/3idjl0qfwOE/s1600-h/image004.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" alt="" src="http://bp3.blogger.com/_OyrxYulzYnY/RiRvHXIAs7I/AAAAAAAAARE/3idjl0qfwOE/s400/image004.jpg" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;จากรูปจะดูแยกเป็นสองส่วนคือ Web Zone จะเป็นส่วนที่รับ Request เข้ามาจะมี Web Server และส่วนของ Application Zone เป็นส่วนที่มี Application Server อยู่&lt;br /&gt;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 จะจัดการเองว่าให้วิ่งไปที่เครื่องไหน&lt;br /&gt;2. ถ้าในกรณีของ Websphere นั้นเราจะให้ตัว Websphere จัดการเอง เราเลยไม่สามารถที่จะให้มันวิ่งผ่าน Load Balance ได้ เลยจำเป็นต้องทำ Forwarding จากเครื่อง Aplication Server ออกมาข้างนอก โดยจะเป็น IP 192.168.0.1 กับ IP 192.168.0.2 แทน &lt;div style="CLEAR: both; TEXT-ALIGN: center"&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;img style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; BACKGROUND: 0% 50%; PADDING-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial" alt="Posted by Picasa" src="http://photos1.blogger.com/pbp.gif" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-4731003357512520435?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/4731003357512520435/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=4731003357512520435' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4731003357512520435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/4731003357512520435'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/example-config-network-for-web-server.html' title='Example Config Network (For Web Server and Application Server)'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_OyrxYulzYnY/RiRvHXIAs7I/AAAAAAAAARE/3idjl0qfwOE/s72-c/image004.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-3518337226233813785</id><published>2007-04-12T17:40:00.002+08:00</published><updated>2007-04-12T17:40:56.144+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Network'/><category scheme='http://www.blogger.com/atom/ns#' term='Firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><title type='text'>วิธีการดูว่าจะขอเปิด Firewall จากฝั่ง Application Server หรือ Web Server</title><content type='html'>1. ต้องตรวจสอบ IP ของเราก่อนว่าจะวิ่งจากไหนไปไหน โดยเราจะต้องแบ่งประเภทของ IP ที่มีอยู่ที่เครื่องก่อน&lt;br /&gt;· IP ในวงแลนเดียวซึ่งจะสามารถวิ่งอยู่แค่ในส่วนวงแลนเดียวกันเท่านั้น ไม่สามารถที่จะใช้อ้างอิงจากข้างนอก เข้ามาข้างในได้ และจากข้างในไปข้างนอกได้ (ex. 10.221.8.21)&lt;br /&gt;· IP Intranet เป็น IP ที่ใช้สำหรับในองค์กร ซึ่งจะเป็น IP ที่คนที่อยู่ในองค์กรเดียวกันจะวิ่งหากันด้วย IP ตอนจะขอเปิด Firewall จะต้องดูที่ IP นี้เป็นหลัก (ex. 192.20.3.1)&lt;br /&gt;· IP Internet เป็น IP ที่ให้คนทั่วไปจากข้างนอกเข้ามาใช้งานได้&lt;br /&gt;&lt;br /&gt;2. ในกรณีที่มี Web Server และ Application Server ให้เช็คว่า ถ้าวิ่งออกจากเราไปหาคนอื่นให้วิ่งจาก Application Server ไปยัง Web Server ของคนอื่น แต่ถ้าคนอื่นวิ่งมาให้เปิดจากฝั่ง Web Server&lt;br /&gt;&lt;br /&gt;3. ถ้ามีเป็น Cluster นั้นให้เปิด Firewall ทั้งสองเครื่องที่วิ่งไปเพราะเราจะไม่รู้ว่าวิ่งจากเครื่อง Application Server ไหนกรณีที่มี Load Balance นั้นให้ขอเปิดในส่วนที่วิ่งเข้ามาที่ Load Balance แล้วขอจาก Load Balance มา Web Server ไม่ต้องขอจาก Web Server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314399940512680345-3518337226233813785?l=yashima.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yashima.blogspot.com/feeds/3518337226233813785/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314399940512680345&amp;postID=3518337226233813785' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3518337226233813785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314399940512680345/posts/default/3518337226233813785'/><link rel='alternate' type='text/html' href='http://yashima.blogspot.com/2007/04/firewall-application-server-web-server.html' title='วิธีการดูว่าจะขอเปิด Firewall จากฝั่ง Application Server หรือ Web Server'/><author><name>Yashima</name><uri>http://www.blogger.com/profile/10241188301583665550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_OyrxYulzYnY/SL9YgAUSvLI/AAAAAAAACJs/I36oym5DGks/S220/DSCF0033.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314399940512680345.post-1400614153123957924</id><published>2007-04-09T16:22:00.001+08:00</published><updated>2007-04-09T16:22:50.533+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Websphere 6.1'/><category scheme='http://www.blogger.com/atom/ns#' term='Connection WSDL'/><title type='text'>วิธีตรวจสอบ Connection WSDL</title><content type='html'>&lt;strong&gt;วิธีตรวจสอบ Connection WSDL&lt;/strong&gt;&lt;br /&gt;     1. ให้เช็คก่อนว่า Firewall เปิดหรือยัง สามารถติดต่อไปถึงเครื่อง Server ได้หรือเปล่า โดย&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;#telnet [IP Address] [Port]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;         &lt;span style="color:#ff0000;"&gt; ถ้าไม่มีการ Time Out ก็แสดงว่าสามารถ ติดต่อถึงเครื่อง Server นั้นได้แล้ว&lt;br /&gt;          ถ้า Time Out ให้ขอเปิด Firewall จากเครื่องที่เราเทส ไปยังเครื่อง Server&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;     2. ตรวจสอบว่าต้องวิ่งผ่าน https หรือเปล่า ถ้าวิ่งผ่านให้ทำการ Trust Certificate ซะก่อนโดย ทำที่ Server (ไม่ใช่ที่ Application หรือ ear file เด็ดขาด)&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;Example Config SSL บน Aplication ซึ่งไม่ควรใช้&lt;br /&gt;System.setProperty("javax.net.ssl.trustStore", trustStoreFile);&lt;br /&gt;System.setProperty("javax.net.ssl.trustStorePassword", trustStorePwd);&lt;br /&gt;System.setProperty("javax.net.ssl.keyStore", keyStoreFile);&lt;br /&gt;System.setProperty("javax.net.ssl.keyStorePassword", keyStorePwd);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;     3. Test WSDL โดย Test จาก คลิกขวาจากไฟลล์ WSDL แล้วเลือก Web Services à Test with Web Services Explorer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     4. หลังจาก Test ผ่านข้อ 3 แล้วให้ทำการ Test โดยการ Generate Stub Call ไปเรียก Web Services (เขียนเรียกจาก jsp) โดยเลือก WSDL ไฟลล์ แล้วคลิกขวาเลือก Web Services à Generate Java bean skeleton แล้วก็ Next จนจบ&lt;br /&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: blue 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: blue 1pt solid; PADDING-LEFT: 4pt; BACKGROUND: #ffff99; PADDING-BOTTOM: 1pt; BORDER-LEFT: blue 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: blue 1pt solid"&gt;&lt;br /&gt;Example วิธีการเรียกจากการ Generation เอง (เรียกผ่าน Proxy File)&lt;br /&gt;UMarket_PortType service = new UMarket_PortTypeProxy();&lt;br /&gt;StandardBizRequest re
