วันพุธที่ 30 เมษายน พ.ศ. 2557

Config Maven สำหรับ Websphere

เป็นการ Config Eclipse เพิ่มเติมสำหรับ Add Reference Websphere  ครับ
โดยเพิ่ม ข้อมูลตามนี้ แยกตามแต่ละชนิดของ Application (ในส่วน additionalProjectFacets) แล้วใส่เลขเวอร์ชั่นของ Websphere  ลงไป

 <plugin>  
                     <groupId>org.apache.maven.plugins</groupId>  
                     <artifactId>maven-eclipse-plugin</artifactId>  
                     <version>2.9</version>  
                     <configuration>  
                          <wtpversion>2.0</wtpversion>  
                          <additionalProjectFacets>  
                               <jst.ear>6.0</jst.ear>  
                               <com.ibm.websphere.extended.ear>8.0</com.ibm.websphere.extended.ear>  
                               <com.ibm.websphere.coexistence.ear>8.0</com.ibm.websphere.coexistence.ear>  
                          </additionalProjectFacets>  
                     </configuration>  
                </plugin>  

1. Web Project เพิ่ม
     - com.ibm.websphere.extended.web
     - com.ibm.websphere.coexistence.web
2. EJB Project
     - com.ibm.websphere.extended.ejb
3. Enterprise Project
     - com.ibm.websphere.extended.ear
     - com.ibm.websphere.coexistence.ear

วันพุธที่ 2 เมษายน พ.ศ. 2557

Config Maven ให้โหลด Source และ API Docs

ปกติสามารถโหลดได้จาก Command Line ได้เลยครับ หรือจะไป Config บน settings.xml

1. แบบที่ทำผ่าน Command Line ให้เพิ่ม

-DdownloadSources=true -DdownloadJavadocs=true  
 
2. แบบที่เพิ่มใน settings.xml (ให้เพิ่มไฟล์นี้ใน Folder .m2)

<profiles>
     <profile> 
          <id>downloadSources</id>
          <properties> 
               <downloadSources>true</downloadSources>
               <downloadJavadocs>true</downloadJavadocs>
          </properties> 
     </profile> 
</profiles> 
<activeProfiles> 
     <activeProfile>downloadSources</activeProfile> 
</activeProfiles> 


Reference
http://stackoverflow.com/questions/5780758/maven-always-download-sources-and-javadocs

วันพุธที่ 26 มีนาคม พ.ศ. 2557

Config JBoss 7.1 ให้ใช้งาน JPA 2.1

JBoss 7.1 จะใช้ JPA 2.0 ครับ ผมเลยอัพเดท Library ของ Server ให้เป็น JPA 2.1 โดยทำดังนี้
1. ไปที่ Folder {JBOSS_HOME}\modules\javax\persistence\api\main จะเห็นไฟล์ hibernate-jpa-2.0-api-1.0.1.Final.jar อยู่ให้ทำการ copy hibernate-jpa-2.1-api-1.0.0.Final.jar มาวางไว้ที่นี่ (Library JPA 2.1)
2. แก้ไขไฟล์ module.xml  ในส่วน resource-root แก้ส่วนของ Path ให้เป็น hibernate-jpa-2.1-api-1.0.0.Final.jar
3. Stop/ Start Server ก็จะใช้งานได้แล้วครับ

ปล.
ผมใช้ Spring แล้วมีปัญหาอาจจะต้องอัพเดท File javassist-3.15.0-GA.jar ไปเป็น javassist-3.18.1-GA.jar แล้วแก้ module.xml เพื่อโหลด Library ตัวใหม่ โดยจะอยู่ที่ Path {JBOSS_HOME}\modules\org\javassist\main

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

Config slf4j ให้ใช้งานบน JBoss 7

ปกติ ถ้าเรา Config Log4j บน slf4j แล้วจะใช้งานไม่ได้เพราะไม่มีการอ่าน Config จาก Application ครับ
เลยต้อง Config เพิ่มโดย

1. สร้างไฟล์ jboss-deployment-structure.xml
2. Config บอกให้ exclude package เหล่านี้ ตามข้างล่าง

 <?xml version="1.0" encoding="UTF-8"?>  
 <jboss-deployment-structure>  
  <deployment>  
   <exclusions>  
     <module name="org.apache.log4j" />  
     <module name="org.slf4j" />  
     <module name="org.slf4j.impl" />  
   </exclusions>  
  </deployment>  
 </jboss-deployment-structure>  

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

Config Datasource บน JBoss AS7

เราจะต้อง Config JDBC Library ให้มีบน Library ก่อน แล้วถึงจะ Config Datasource อีกทีนึงครับ ผมจะยกตัวอย่างของ Oracle

1. Config JDBC Library ก่อน โดย Config ไว้ที่
  • {JBOSS_HOME}\modules\ แล้วสร้าง Path ของ Library ไว้เช่น com\oracle\ojdbc6\main
  • สร้างไฟล์ module.xml แล้วเอา Jar File มาวางไว้ โดยใน Module.xml ส่วนสี่แดงต้องแก้ไข
    • name คือชื่อส่วน folder path ที่สร้างไว้
    • resource-root คือชื่ือ Jar File ที่เราเอามาวางไว้
 <?xml version="1.0" encoding="UTF-8"?>  
 <module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">  
  <resources>  
   <resource-root path="ojdbc6.jar"/>  
  </resources>  
  <dependencies>  
           <module name="javax.api" />  
     <module name="javax.transaction.api"/>  
     <module name="javax.servlet.api" optional="true"/>  
  </dependencies>  
 </module>  

2. Config Datasource

  • แก้ไข {JBOSS_HOME}\standalone\configuration\standalone.xml แล้วเพิ่มในส่วนของ Datasource และ Drivers
    • ส่วนสีแดงต้องแก้ไขให้ถูกต้องตามที่ Config ไว้
    • ส่วนสีหน้ำเงินจะต้องตรงกันเพราะ driver จะไป references กับ config driver ข้างล่างที่ตรงสีฟ้าครับ
         <datasource jndi-name="java:jboss/datasources/SampleJPADS" pool-name="SampleJPADS" enabled="true" use-java-context="true">  
           <connection-url>jdbc:oracle:thin:@localhost:1521/TEST</connection-url>  
           <driver>oracle</driver>  
           <security>  
             <user-name>test</user-name>  
             <password>test1234</password>  
           </security>  
         </datasource>  

 <driver name="oracle" module="com.oracle.ojdbc6">  
             <xa-datasource-class>oracle.jdbc.driver.OracleDriver</xa-datasource-class>  
           </driver>  
         </drivers>  

3. แล้วทำการ Restart Server ก็จะใช้งาน Datasource ได้แล้วครับ โดยเรียกจาก jndi-name จากตัวอย่าง java:jboss/datasources/SampleJPADS

4. เราสามารถดู Log Start Server ได้ว่าใช้งานได้รึยัง ตามนี้ ครับ
[org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/SampleJPADS]

วันจันทร์ที่ 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

วันอังคารที่ 28 กุมภาพันธ์ พ.ศ. 2555