Showing posts with label BLOB. Show all posts
Showing posts with label BLOB. Show all posts

Thursday, July 02, 2009

WAS별 CLOB관련 설정

 

출처는 okjsp

 

CLOB컬럼의 경우 WAS에 따라 설정하는 방법이 다르기 땜에 개발후 운영에 적용시

 

일부 문제가 되기도 한다.ㅎㅎ

 

 

import java.sql.Clob;
import weblogic.jdbc.common.OracleClob;
import oracle.jdbc.driver.OracleResultSet;
import oracle.sql.CLOB;
import org.apache.commons.dbcp.DelegatingResultSet;


String query1 = "select content from "+table+" where no="+ no + " for update";

con = getConnection();
con.setAutoCommit(false);//꼭 setAutoCommit을 false로 지정

pstmt = con.prepareStatement(query1);
rs = pstmt.executeQuery();

while (rs.next()){

 /**********************************************
 * Tomcat
 * ********************************************/
 Clob clob = rs.getClob(1);
 Writer writer = ((CLOB)clob).getCharacterOutputStream();
 Reader src = new CharArrayReader(contentData.toCharArray());
 char[] buffer = new char[1024];
 int read = 0;
 while ( (read = src.read(buffer,0,1024)) != -1)
 {
   writer.write(buffer, 0, read); // write clob.
 }
 src.close();               
 writer.close();   


 /**********************************************
 * weblogic
 * ********************************************/
 Clob clob = rs.getClob(1);
 Writer writer = ((OracleClob)clob).getCharacterOutputStream();
 Reader src = new CharArrayReader(contentData.toCharArray());
 char[] buffer = new char[1024];
 int read = 0;
 while ( (read = src.read(buffer,0,1024)) != -1)
 {
   writer.write(buffer, 0, read); // write clob.
 }
 src.close();               
 writer.close();


 /**********************************************
 * sunone
 * ********************************************/
 Clob clob = rs.getClob(1);
 Writer characterStream = clob.setCharacterStream(0);
 characterStream.write(contentData);
 characterStream.close();


 /**********************************************
 * interstage

 * ********************************************/

 CLOB clob = ((OracleResultSet)((DelegatingResultSet)rs).getDelegate()).getCLOB(1);
 BufferedWriter writer = new BufferedWriter(clob.getCharacterOutputStream());
 writer.write(form.getContent());
 writer.close();

}

con.commit();
con.setAutoCommit(true);

웹으로 접근 불가능한 폴더의 이미지를 표시할 경우

본 샘플은 http링크 방식으로 이미지같은 것을 표시못하는
 
즉, WEB CONTEXT바깥에 존재하거나, 따로 파일 레파지토리에 있는 이미지 파일등을 화면에
 
뿌려줄때 사용하면 된다.
 
BLOB에 이미지가 들어있는 경우 해당 이미지를 뿌려줄때도 사용해도 되겟다 ㅎㅎ
 
  try {

   File f = new File("이미지 파일의 경로 및 파일명");

   FileInputStream fis = new FileInputStream(f);

   StringBuffer buf = new StringBuffer();

 
   int c;

   while ((c = fis.read()) != -1)

   buf.append((char)c);

   response.setContentType("image/jpeg");

   response.getWriter().write(buf.toString());

  } catch (FileNotFoundException e) {

   e.printStackTrace();

  }
 
위와 같이 간단히 구현이 가능하다. ㅎㅎ