แสดงบทความที่มีป้ายกำกับ spring แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ spring แสดงบทความทั้งหมด

วันจันทร์ที่ 5 มีนาคม พ.ศ. 2555

ปัญหาการใช้ @Transactional แล้วได้ exception Error: No Hibernate Session bound to thread

เป็นปัญหาที่เราใช้ Spring กับ Hibernate แล้วดึง getCurrentSession มาใช้ แล้วจะขึ้น Exception ประมาณนี้

org.hibernate.HibernateException: No Session found for current thread

ซึ่งเกิดจากการที่เราไม่มี Transaction ไปครอบไว้ แก้โดย
1. เพิ่ม @Transactional
2. เพิ่ม <tx:annotation-driven />
3. เพิ่ม component scan ในส่วนที่ไว้ tx:annotation-driven ต้องเป็นส่วนใน applicatoncontext.xml ครับ
4. ถ้าเราใส่ component scan บน dispatch-servlet.xml แล้ว จะยังไม่ได้ ต้องทำการเพิ่มให้ส่วน dispatch-servlet.xml เอาเฉพาะ controller ส่วน business service, dao service ให้เอาไปวางไว้ที่ applicationtext.xml แทน ก็จะได้ครับ

Reference
http://www.sivalabs.in/2011/05/springmvc-hibernate-error-no-hibernate.html

วันพฤหัสบดีที่ 15 กันยายน พ.ศ. 2554

การแก้ไข error zk-spring duplicate class definition: org/zkoss/spring/beans/zkcomponents/ZKComponentBeanMethods

ถ้าลองทำตามตัวอย่าง จากที่ ZK มาให้จากลิงค์ http://books.zkoss.org/wiki/ZK_Spring_Essentials/Working_with_ZK_Spring/Working_with_ZK_Spring_Core/Inject_ZK_Components_in_Spring_Beans
นี้ แล้วอาจจะเกิด exception ตามนี้ครับ
Caused by: java.lang.LinkageError: duplicate class definition: org/zkoss/spring/beans/zkcomponents/ZKComponentBeanMethods
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at javassist.ClassPool.toClass2(ClassPool.java:1098)
        at javassist.ClassPool.toClass(ClassPool.java:1079)
        ... 44 more


      ซึ่งมาจาก เรา เรียงลำดับการโหลดผิดใน web.xml โดยจะต้องเอา org.zkoss.spring.web.context.CoreContextListener ขึ้นก่อน org.springframework.web.context.ContextLoaderListener จะทำให้แก้ปัญหานี้ได้ครับ