BLOG main image
분류 전체보기 (77)
프로젝트 (8)
IT소문 (9)
영화가주는인생 (5)
OpenAPI (9)
DBMS (5)
JAVA (16)
IPhone/Object-C (9)
안드로이드 (0)
WEB etc (8)
Server (1)
Michael Kors Handbags on Sale
Michael Kors Handbags on Sale
Nike Roshe Run
Nike Roshe Run
michael kors handbags outlet
michael kors handbags outlet
outlet de zapatillas nike
outlet de zapatillas nike
Cheap beats by dre uk
Cheap beats by dre uk
2,281,898 Visitors up to today!
Today 182 hit, Yesterday 218 hit
daisy rss
tistory
'Java'에 해당되는 글 8건
2011.09.11 12:11
java를 사용해서 실시간으로 업로드되는 영상을 ffmpeg를 사용해서 변화시키는 부분입니다.
ffmpeg는 로컬로 돌아가는 프로그램이라서 java에서 
해당 프로그램을 실행을 시켜야 합니다.

윈도우라면 exe파일을 실행을 시켜야 한다는 것인데
java에서는 ProcessBuilder 라는 놈이 사용되고 있습니다.

순서는  A폴더에  파일이 들어왔는지 실시간으로 체크하고 
ffmpeg로 인코딩하고 완료가되면 B폴더로 옮기게 됩니다.

public String convert() {


String ffmpegPath = "ffmpeg 파일이 있는 경로";    예) /work/ffmpeg
String fOriginal = "/work/upload.mp4";  //실시간으로 업로드되는 파일
String fResult = "/work/upload.flv";      // 인코딩하고 저장 할 파일위치

String[] cmdLine = new String[]{ffmpegPath,

                                               "-i",                           // 변환시킬 파일위치

                                               fOriginal,      

                                               "-ar",

                                               "44100",                

                                               "-ab",

                                               "32",                      

                                               "-s",

                                               "500x300",     //화면 사이즈

                                               "-b",

                                               "768k",          //비트레이트

                                               "-r",

                                               "24",           //영상 프레임

                                               "-y",

                                               "-f",

                                               "flv",            // flv파일 형태로 출력

                                               fResult};  // 저장하는 위치입니다.
 

// 프로세스 속성을 관리하는 ProcessBuilder 생성.
ProcessBuilder pb = new ProcessBuilder(cmdLine);
pb.redirectErrorStream(true);
Process p = null;
 try
        // 프로세스 작업을 실행
        
p = pb.start();
} catch (Exception e) {         
     e.printStackTrace();

     p.destroy();
     return null;
}

exhaustInputStream(p.getInputStream());   // 자식 프로세스에서 발생되는 inputstrem를 소비시켜야합니다.


 
 try {

        // p의 자식 프로세스의 작업이 완료될 동안 p를 대기시킴
        p.waitFor();

 } catch (InterruptedException e) {

         p.destroy();

 }


// 정상 종료가 되지 않았을 경우

 if (p.exitValue() != 0) {

       System.out.println("변환 중 에러 발생");

       return null;

 }

   // 변환을 하는 중 에러가 발생하여 파일의 크기가 0일 경우

  if (fResult.length() == 0) {

        System.out.println("변환된 파일의 사이즈가 0임");

         return null;

  }

  p.destroy();

}

private
void exhaustInputStream(final InputStream is) {

    // InputStream.read() 에서 블럭상태에 빠지기 때문에 따로 쓰레드를 구현하여 스트림을 소비한다
         try {

                BufferedReader br = new BufferedReader(new InputStreamReader(is));

                String cmd = null;

                while((cmd = br.readLine()) != null) { // 읽어들일 라인이 없을때까지 계속 반복

                   //System.out.println(cmd);

                }

                br.close();

             } catch(IOException e) {

                e.printStackTrace();

             }

   }

public static void main(String[] args) 
{

 File f = new File("실시간으로 올라오는 파일위치");

if(f.exists()){
     convert();




단일 프로세스보다는 스레드로 돌리면 더 좋겟죠?
인코딩을 하게되면 cpu를 많이 잡아 먹습니다. ffmpeg가 아니더라도 막 올라가더군요..
 
이제 이 파일을 window 에서는 service로 linux에서는 crontab에 들록되어
계속해서 돌려주면 되겠습니다.



 


 
 
저작자 표시
신고
이전 댓글 더보기
Michael Kors | 2012.12.18 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
Your articles always have insights, very good,this is so ought to be an embarrassment to white liberals who are die. Thanks for sharing informative post. beautiful !!!
toms womens movember | 2012.12.19 09:41 신고 | PERMALINK | EDIT/DEL | REPLY
Une journaliste du Monde, http://www.discounttomssshoes.com/ purple toms, qui tente de se rendre en Tunisie depuis une semaine, http://www.discounttomssshoes.com/ toms code, n'a pas été autorisée par les autorités tunisiennes à entrer dans le pays, http://www.discounttomssshoes.com/ sale online toms, annonce le quotidien dans son édition datée de vendredi, http://www.discounttomssshoes.com/ toms ash maudie.
Related articles:


http://www.playyeah.com/viewthread.php?tid=589256&extra= http://www.playyeah.com/viewthread.php?tid=589256&extra=

http://redness.bbspace.org/viewthread.php?tid=16355&extra=page=1&frombbs=1 http://redness.bbspace.org/viewthread.php?tid=16355&extra=page=1&frombbs=1

http://hgtest2.hg13.huihost.com/thread-1049783-1-1.html http://hgtest2.hg13.huihost.com/thread-1049783-1-1.html
Miu Miu Boots | 2012.12.19 11:51 신고 | PERMALINK | EDIT/DEL | REPLY
코드자동완성 무료호스팅 블랙캣 Color Graphing Calculator enables the user to assign colors to various graphing objects like dotted lines, curves, bars, grid line rewtryreyuy
Jimmy Choo | 2012.12.24 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
수준의 작업이 가능하면서도 무척 배우기 쉽다. 또한 "문서"라는 작업 대상에 적합한 각종 API들이 제공되기 때문에 훨씬 더 쉽게 dfsadeeqrtrt
Jimmy Choo | 2012.12.24 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
수준의 작업이 가능하면서도 무척 배우기 쉽다. 또한 "문서"라는 작업 대상에 적합한 각종 API들이 제공되기 때문에 훨씬 더 쉽게 dfsadeeqrtrt
business telephone lines | 2013.01.03 18:49 신고 | PERMALINK | EDIT/DEL | REPLY
It’s a great site to see. That will help for improvisation of me. Will definitely marked as Bookmark.
moncler online | 2013.01.05 16:56 신고 | PERMALINK | EDIT/DEL | REPLY
Le ministre de l'Intérieur Brice Hortefeux, http://www.moncleroutletespain.com/ moncler outlet, condamné en juin 2010 pour avoir tenu des propos jugés "outrageants" envers les personnes d'origine arabe, http://www.moncleroutletespain.com/ http://www.moncleroutletespain.com/, sera rejugé le 9 juin, http://www.moncleroutletespain.com/ moncler chaquetas, a décidé mercredi la cour d'appel de Paris, http://www.moncleroutletespain.com/ moncler online.Related articles:


http://essay119.tistory.com/1482 http://essay119.tistory.com/1482

http://hiddenchampion.tistory.com/741 http://hiddenchampion.tistory.com/741
coach online outlet | 2013.03.01 14:59 신고 | PERMALINK | EDIT/DEL | REPLY
http://www.coachoutletvipstores.com/ coach online outlet
http://www.coachoutletonlinevipstore.com/ coach outlet online
discount oakley sunglasses | 2013.03.18 14:14 신고 | PERMALINK | EDIT/DEL | REPLY
Great and nice post thank you.
Shearrofeborn | 2013.07.30 20:57 신고 | PERMALINK | EDIT/DEL | REPLY

The forex industry remaining the biggest industry in the planet is also probably the most beneficial one as well. Practically anybody may become a trader and make massive money on this line, delivered these are decided good enough, and consider ample initiatives to receive by themselves nicely acquainted using the finer nuances with the trading course of action. Just as during the circumstance with other streams of life, it will not be a misnomer to state how the online has also substantially adjusted the extremely encounter in the forex trading process. No longer do you need to journey prolonged distances to trade in forex. Because of the internet, you can now do that sitting down while in the confines of the dwelling. Forex forex on the web trading is often a subject which is flourishing currently and it isn't surprising thinking of the volume of lucrative prospects the field presents.It is often preferable you equip oneself with the many requisite expertise wi
| 2013.09.11 23:55 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
http://lvneverfullbagprice.com | 2014.01.10 10:06 신고 | PERMALINK | EDIT/DEL | REPLY
thank you for share!
Emomynurn | 2014.10.23 05:44 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.10.28 21:31 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Nivalasn | 2014.10.30 11:58 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.10.31 06:48 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.11.09 06:11 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
adaroamurgy | 2014.12.03 03:13 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
dexuanesn | 2014.12.29 16:13 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
laurasmithejue | 2015.01.15 09:39 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Name
Password
Homepage
Secret
2011.04.27 12:55

qrcode.jar 파일을 classpath 에 추가하시고요.~
jsp 코딩을 하시면
qr코드를 쉽게 만들수 있습니다.~

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.awt.Color" %>
<%@ page import = "java.awt.Graphics2D" %>
<%@ page import = "java.awt.image.BufferedImage" %>
<%@ page import = "com.swetake.util.Qrcode, com.sun.image.codec.jpeg.*" %>
<%@ page import = "javax.servlet.http.HttpServletResponse"%>
<%!

public void qrcodeMake(String arg, HttpServletResponse res) throws Exception {

 Qrcode qrcode=new Qrcode();
 qrcode.setQrcodeErrorCorrect('M');
 qrcode.setQrcodeEncodeMode('B');
 qrcode.setQrcodeVersion(7);

 BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB);

 Graphics2D g = bi.createGraphics();
 g.setBackground(Color.WHITE);
 g.clearRect(0, 0, 139, 139);

 g.setColor(Color.BLACK);
 byte[] d = null;

  d =arg.getBytes("8859_1");
  if (d.length>0 && d.length <123){
   boolean[][] b = qrcode.calQrcode(d);
   for (int i=0;i<b.length;i++){
    for (int j=0;j<b.length;j++){
     if (b[j][i]) {
      g.fillRect(j*3+2,i*3+2,3,3);
     }
    }
   }
  }
 g.dispose();
 bi.flush();

 res.setContentType("image/jpeg");
 ServletOutputStream os = res.getOutputStream();
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
 encoder.encode(bi);
 os.flush();
 os.close();
}

%>
<%
 String qrString ="http://dakccom.tistory.com";
 qrcodeMake(qrString, response);
%>


 

저작자 표시
신고
이전 댓글 더보기
Mou Boots Women | 2012.12.24 10:09 신고 | PERMALINK | EDIT/DEL | REPLY
수준의 작업이 가능하면서도 무척 배우기 쉽다. 또한 "문서"라는 작업 대상에 적합한 각종 API들이 제공되기 때문에 훨씬 더 쉽게 작업할 수 있다
Yves Saint Laurent | 2012.12.26 15:55 신고 | PERMALINK | EDIT/DEL | REPLY
세팔 빙고! 이 and even the latest technologically advanced Isabel Marant balls selling for $45 the dozen, Isabel Maranters are n dfsadeeqrtrt qerwtytrertytrwy
poker4 | 2013.05.31 17:12 신고 | PERMALINK | EDIT/DEL | REPLY
карточные игры от алавар через торрент бесплатно, бездепозитный бонус ред стар покер!
jackpot8 | 2013.06.05 02:28 신고 | PERMALINK | EDIT/DEL | REPLY
скачать карточная игра петух или азартные игры бесплатно играть автоматы 777 в красноярске.
slots3 | 2013.06.15 23:28 신고 | PERMALINK | EDIT/DEL | REPLY
интернет казино бездепозитный бонус форекс, онлайн казино eurogrand.
slots8 | 2013.06.16 10:14 신고 | PERMALINK | EDIT/DEL | REPLY
покер стар платный, карточные игры magic gathering!
poker6 | 2013.06.18 02:19 신고 | PERMALINK | EDIT/DEL | REPLY
покер играть фантики, либо казино роял stara zagora.
kazino7 | 2013.06.18 23:28 신고 | PERMALINK | EDIT/DEL | REPLY
игровые автоматы 777 book of ra, а также интернет казино на реальные деньги без вложений outlook.
poker2 | 2013.06.20 03:55 신고 | PERMALINK | EDIT/DEL | REPLY
тир игровой автомат, а также карточные игры для двоих правила!
kazino796 | 2013.06.21 11:39 신고 | PERMALINK | EDIT/DEL | REPLY
накрутка денег в играх, отзывы о казино 4aces!
poker1 | 2013.06.24 21:49 신고 | PERMALINK | EDIT/DEL | REPLY
онлайн казино рулетка по всему миру, скачать эверест покер.
kazino798 | 2013.07.11 07:58 신고 | PERMALINK | EDIT/DEL | REPLY
игровые автоматы гаражи скачать без смс через торрент, а также азартные игры онлайн бесплатно чукча.
jackpot8 | 2013.07.13 10:38 신고 | PERMALINK | EDIT/DEL | REPLY
играть игровые автоматы гаминатор, онлайн казино.
jackpot2 | 2013.07.15 18:38 신고 | PERMALINK | EDIT/DEL | REPLY
скачать покер старз еще игровые автоматы играть бесплатно на ipad new.
kazino953 | 2013.07.20 02:51 신고 | PERMALINK | EDIT/DEL | REPLY
азартные игры игровые автоматы gaminator, карточные игры онлайн 1001.
jackpot4 | 2013.07.21 23:48 신고 | PERMALINK | EDIT/DEL | REPLY
казино вики дайнеко, либо казино вегас манежная.
SwenteeSquile | 2013.08.01 02:48 신고 | PERMALINK | EDIT/DEL | REPLY
Онлайн казино - это удобный инструмент как для заработка так и для развлечений.
Два режима игры:
1) Реальные деньги
2) Демо счет
Новых игроков в казино ждет не только хорошее настроение но и множество бонусов.
Бонусы даются как новым так и старым игрокам, более подробно можете узнать на сайте в разделе Акции.

И конечно же главный приз!
ДЖЕКПОТ на сумму свыше 90000$

Поробуйте.
И может быть Вы станете счастливым обладателем Джекпота.

Онлайн казино ждет Вас.
Заходите на сайт и наслаждайтесь игрой.

Ссылка на сайт: http://azat-life.p.ht/

*Перейдя по ссылке нажать кнопку "начать игру"
*На Реальные деньги могут играть только зарегистрировавшиеся игроки
Anodzuchis | 2014.12.08 07:26 신고 | PERMALINK | EDIT/DEL | REPLY
ssf buy anastrozole 1 mg - http://kfdbppteuhs.com, anastrozole 1 mg price, anastrozole hot flashes
TyroneBami | 2014.12.23 03:40 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
fastbet99 | 2015.01.17 20:23 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Name
Password
Homepage
Secret
2011.02.09 11:37

게시판을 작성하다보면
작성자가
http://~~ 이런식으로 글을 입력한후
글내용 보기를 하면
http://로 시작된 부분은 링크가
자동으로 걸리게 하는 소스입니다.

간단하지만 게시판등에서 유용하게 사용하실 수 있으실 겁니다.


import java.util.regex.*;

public class LinkTest {

  /** 사용제한
  * 링크는
http:// 로 시작한다
  * 한글링크는 안된다
  */
public static void main(String[] args) {
  /** 아래과 같이 사용하여되 되지만 만약 작성자가 직접 태그를 이용하여
  * 링크를 거는경우 링크가 이상하게 잡히는 경우를 막기위해
  * < 값은 자동링크생성에서 제외하였습니다.
  * 확인하고 싶으신분은 아래 regex 를 사용해서 링크를 생성해보세요
  **/
  //String regex = "([\\p{Alnum}]+)://([a-z0-9.\\p{Punct}\\_]+)";

  String regex = "([\\p{Alnum}]+)://([a-z0-9.\\-&/%=?:@#$(),.+;~\\_]+)";
  String strHTML = "한글사랑
http://www.naver.com test-text";
  
  Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
  Matcher m = p.matcher(strHTML);
  String s = m.replaceAll("<a href='http://$2' target=_blank>
http://$2</a>");
  System.out.println("origin string : "+strHTML);
  System.out.println("link string : "+s);
}

}
저작자 표시
신고
coach outlet online | 2012.11.29 12:39 신고 | PERMALINK | EDIT/DEL | REPLY
This is my first time i visit here. I discovered so numerous interesting stuff in your weblog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all of the enjoyment here! maintain up the great work.
dmpoacfxu | 2014.05.05 02:49 신고 | PERMALINK | EDIT/DEL | REPLY
99896 http://www.beatsbydremallonline.fr/
koilxqfts | 2014.05.05 20:36 신고 | PERMALINK | EDIT/DEL | REPLY
99754 http://www.toputahjobs.com/
zkakyzacj | 2014.05.06 11:18 신고 | PERMALINK | EDIT/DEL | REPLY
32177 http://www.airmax2014fr.net/
Name
Password
Homepage
Secret
2008.11.11 10:36

 

JSTL functions

Functions  
fn:contains()
fn:containsIgnoreCase()
fn:endsWith()
fn:escapeXml()
fn:indexOf()
fn:join()
fn:length()
fn:replace()
fn:split()
fn:startsWith()
fn:substring()
fn:substringAfter()
fn:substringBefore()
fn:toLowerCase()
fn:toUpperCase()
fn:trim()

 

 

사용법은 아래와 같다.

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

<c:if test="${fn:indexOf(menuValue, '|0101')>-1}">

    <input type=checkbox nam=menu value="0101" checked>메뉴1

</c:if>

<c:if test="${fn:indexOf(menuValue, '|0101')==-1}">

    <input type=checkbox nam=menu value="0101">메뉴1

</c:if>

 

JSTL을 사용하면서 그나마 편하기는 하지만, 그래도 velocity나 JSP를 이용하는 것보다는

불편한게 사실이다

신고
coach outlet online | 2012.11.29 12:37 신고 | PERMALINK | EDIT/DEL | REPLY
This is my first time i visit here. I discovered so numerous interesting stuff in your weblog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all of the enjoyment here! maintain up the great work.
business telephone lines | 2013.01.03 22:42 신고 | PERMALINK | EDIT/DEL | REPLY
It’s a great site to see. That will help for improvisation of me. Will definitely marked as Bookmark.

<a href="http://www.xinix.co.uk/cheap-business-calls-deals-installation-phone-line-packages/">business phone deals</a>
Name
Password
Homepage
Secret
2008.07.30 11:53

<sqlMap namespace="SysMenu">
  <cacheModel id="menuCache" type ="LRU">
   <flushInterval hours="24"/>
   <flushOnExecute statement="SysMenu.insertMenu"/>
   <property name="cache-size" value="1000" />
  </cacheModel>

  <select id="getMenu" resultMap="menuResult"  cacheModel="menCache">
    select * from menu   
  </select>

  <insert id="insertMenu">
    insert into menu (menuid, menuname) values ('menu1','메뉴1')
  </insert>
</sqlMap>

위 설정은 24시간마다 또는 관련된 update문이 수행될때마다 지워진다

flushOnExecute의 statement 속성은 sqlMap의 namespace명을 포함한 statement id를 적는다
ex) SysMenu.insertMenu

  1. LRU : 캐쉬가 full상태가 되었을때 캐쉬로 부터 최근에 사용된 요소를 제거한다.
  2. FIFO : 캐쉬가 full상태가 되었을때 캐쉬로 부터 가장 오래된 객체를 제거한다.
  3. MEMORY : 캐쉬를 관리하기 위해서 SOFT, WEAK, 그리고 STRONG 같은 자바 참조 타입을 사용한다. 이것은 메모리에 머물게 될 것을 결정하기 위해 garbage collector 를 허락한다. 사용될수 있는 구현은 메모리가 모자란 곳의 애플리케이션내에서 사용된다.
  4. OSCACHE : OSCache2.0 캐쉬 엔진을 위한 플러그인이다. 당신은 OSCache를 설정하기
신고
Name
Password
Homepage
Secret
2008.07.17 14:23

이클립스에서 작업하고 SecureCRT 나 SSH Secure Shell 를 사용해서
업로드 또는 콘솔작업을 했었는데요..

불편하더라구요...(나만그런가ㅋㅋ...)
늘 작업하면서 이클립스에서 몽땅 해결할수 있는 방법이 없을까 ..
그래서 개발시간을 좀더 줄여서 일찍퇴근하고 커피한잔 더 마실수는 없는걸까..
하고 생각을 했습니다.

그래서 찾아보니..바로 답이 나오네요..^^;;(역쉬촌놈입니다.)
사용해보니..아직까진 편하다는 느낌은 안들구....
좀더 사용해봐야 할듯합니다.


설치법
Eclipse 3.3 에서 설치하였습니다.

Help > Software Updates > Find and Install      가서

Search for new features to install       실행

New Remote Site 클릭해서 name 은 아무거나 입력하고 URL 에는 http://eclipse.jcraft.com

OK 클릭

추가한 다음 체크박스에 체크하고 Finish 하면 업데이트를 받을수가 있습니다.



사용하기
설치했다면
Window > Show View > Other  클릭하면 SSH2 라는 폴더가 생겼습니다.
선택해서 Tab은 원하는 위치에 추가시킵니다.
아래 이미지를 클릭하면 이미지처럼 설치가 될거구요. Open Shell ..클릭해서
원하는 서버로 접속하시면 됩니다.

접속방법..

사용자@IP:포트
root@111.222.333.444:222

입니다.

사용자 삽입 이미지



이거와 관련하여 좀더 자세히 알고 싶으시면 아래 링크로 이동 바랍니다.

http://www.jcraft.com/eclipse-sftp/index.html

신고
닥컴마니아 | 2008.07.19 15:54 신고 | PERMALINK | EDIT/DEL | REPLY
너무나 불편하다...>.< 한글도 깨지고..아직잘모르겠습니다..
한번 사용해보세요~
Name
Password
Homepage
Secret
2007.11.15 09:20

Resin.conf는 크게 아래와 같은 구조를 갖는다.
일반적으로 resin.conf의 Depth는 아래의 예를 따른다.

<caucho.com>
<http-server>
<host id=''>
<web-app id='/'>
<servlet-mapping url-pattern='/test' .../>
</web-app>
</host>
</http-server>
</caucho.com>


대부분의 중요한 설정은 web-app에 속해 있다.
Server는 다수의 host element를 포함하며 각 host 는 다수의 web-app 들을 포함할 수 있다.
각 host 는 가상host를 설정하고 각 web-app 는 application을 설정한다.

<caucho.com>
<http-server>
<host id='gryffindor.caucho.com' app-dir='gryffindor'>
<web-app id='/'>
<servlet-mapping .../>
...
</web-app>

<web-app id='/test' app-dir='/usr/local/test'>
...
</web-app>
</host>

<host id='slytherin.caucho.com' app-dir='slytherin'>
...
</host>

...
</http-server>
</caucho.com>


Simple configurations host 와web-app tag의 생략을 허용한다. 만약 host 와 web-app를
생략한다면 default host 와 default application를 사용하게 되며 http-server element 의 모든 web-app에 동일한 설정을 적용하게 된다.

<caucho.com>
<http-server app-dir='/usr/local/web'>
<servlet-mapping .../>
...
</http-server>
</caucho.com>


1. <caucho.com>의 하위 엘리먼트

<log id='/log' href='stderr:' timestamp='[%Y-%m-%d %H:%M:%S.%s]'/>
로깅을 위한 설정부분이며 id별로 각기 다른 로그를 지정할 수 있다.
rollover-count : 몇번의 로그변경을 보관할지 설정
rollover-period : 로그변경 주기 설정
ex> rollover-period=’1d’라고 설정하면 stderr.log.20050301의 형태로 매일 로그가 쌓이게 된다

<security-provider id='com.sun.net.ssl.internal.ssl.Provider'/>
JSSE(Java Secure Socket Extension)를 사용하기 위한 security-provider설정 부분으로 Caucho에서는 설정의 어려움과 성능 저하를 이유로 OpenSSL이나 SSL for Apache/IIS를 사용할 것을 권고하고 있으므로 특별한 경우가 아니면 사용하지 않는 것이 좋다.

<java compiler="internal" compiler-args=""/>
Compiler옵션으로 internal이 default이며 javac나 jikes등의 외부 컴파일러를 지정할 수 있다.

<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="com.caucho.jdbc.mysql.Driver"/>
<init-param url="jdbc:mysql_caucho://localhost:3306/test"/>
<init-param user=""/><init-param password=""/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>

JNDI를 사용한 resin connection pool을 사용할 경우 설정이며 res-ref-name 은 pool name을 의미하며 그 외의 설정은 tag와 property를 참조한다.

<jsp precompile='true' static-encoding='true' recompile-on-error='true'/>
jsp페이지를 precompile하도록 지정하여 다음 접속시 바로 이용할 수 있도록 한다.
Recompile-on-error를 지정하여 jsp페이지를 compile시 java.lang.error가 발생하면 자동으로 recompile되도록 한다. Shift-JIS와 같은 인코딩을 이용해서 writing하고 UTF-8으로 printing하려면 static-encoding을 비활성시킨다.


2. <http-server>의 하위 엘리먼트

<doc-dir>doc</doc-dir>
Server의 root file이 위치한 디렉토리를 지정한다.
Apache : /usr/local/apache/htdocs, IIS : d:\inetpub\wwwroot로 변경하여 사용할 수 있다.

<http port='8080'/>
Resin을 Standalone으로 구동할 경우 사용할 http port를 지정한다.

<srun host='127.0.0.1' port='6802'/>
Load balancing을 위해 Apache나 IIS에 plugin으로 Resin을 사용할 경우의 srun port를 지정한다.

<http port=8443>
<ssl>true</ssl>
<key-store-type>pkcs12</key-store-type>
<key-store-file>keys/server_cert.p12</key-store-file>
<key-store-password>changeit</key-store-password>
</http>

SSL을 사용하는 경우 위와 같은 설정을 하며 아래의 내용을 포함한다.
key-store-type : key store의 종류(ex:비밀키, 공개키 방식)
key-store-file : key store 파일의 위치
key-strore-password : key store파일 access password

<user-name>resin</user-name>
<group-name>resin</group-name>

만약 Unix에서 bin/httpd.sh을 root로 구동할 경우 web server user를 위해 특정 Group name과 User name을 제공해야 한다. RedHat 9.0이후 Linux에서는 bin/resin을 사용해야 한다.

<class-update-interval>2s</class-update-interval>
사용자에 의해 class파일이 update됬는지 여부를 검사하는 주기이다. 이 주기에 따라 resin이 검사하므로 해당 주기를 줄이면 변경즉시 반영되므로 개발시 유용하나 서버에 부하가 가중되므로 운영시는 낮춰주는 것이 좋다.

<servlet-classloader-hack>false</servlet-classloader-hack>
True로 설정하면 Servlet spec 에 따른 classloader를 사용하고 false이면 JDK spec에 따른 classloader를 사용한다.

<error-page exception='connection' location='/my-error-page.html'/>Apache나 IIS를 이용할 시에 srun connection 실패시 표시할 error 페이지를 지정한다.

<caucho-status>true</caucho-status>
Caucho-status를 표시한다.

<thread-max>150</thread-max>
서버당 최대 thread갯수

<thread-keepalive id='100'/>
Keepalive할 trhead수.

<request-timeout id='65s'/>
Socket keepalive 시간. SSL을 사용하지 않는다면 짧게 하는 것이 성능에 좋다.

<accept-buffer-size id='256'/>
Accept buffer상의 socket 수

<thread-min id='5'/>
Socket에서 대기될 때 요청되는 최대 thread 수

<ping sleep-time='1m' retry-count='3' retry-time='1s'>
<url>http://localhost:8080/ping/ping.jsp</url>
</ping>

web server 상태를 확인하기 위해 ping test를 하기 위한 설정이다.
test결과 failuer가 발생하면 resin은 서버를 restart한다.
해당 test를 위한 thread가 JDK와 같기 때문에 해당 Thread의 deadlocks이나 Database connection 증가로 인한 memory leak같은 경우는 catch할 수 없다.

<ignore-client-disconnect>true</ignore-client-disconnect>
Browser를 disconnect할 때 발생하는 ClientDisconnectionExceptions을 무시한다

<cache dir='cache' size='1024' entries='8192'/>
internal caching을 가능하게 한다.
Dir : cache가 적재될 directory
size : memory size(kb)
entries : entry의 전체 개수

<cache-mapping url-pattern='/' expires='2s'/>
Cache된 파일의 유효시간 일반적으로 운영중에는 15m으로 설정한다.

<servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
<servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

<host>외부의 servlet 설정이다. 이곳에 위치하면 모든 host에 적용된다.

<servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>
URL로부터 servlet명으로 invoke한다. 예를 들어 /examples/basic/servlet/HelloServlet 은 HelloServlet class로부터 시작한다. 일반적으로, 보안상 헛점이 생길 수 있으므로 개발중에만 사용하며 운영중에는 사용하지 않는다.

<welcome-file-list>index.xtp, index.jsp, index.html</welcome-file-list>
시작페이지를 지정한다.


3. <host>의 하위 엘리먼트

<access-log id='logs/access.log'
format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
rollover-period='1W'/>
<error-log id='logs/error.log'/>

Resin 단독구동 시 로깅을 위한 내용이다.

<war-dir id='webapps'/>
Specifies a special directory to place war file이 위치한 특정 directory를 지정한다.
War directory에 위치한 어떤 .war (web-application resource) file이던지 자동으로 확장/설치 된다. 일반적으로, war file은 설정을 위해 WEB-INF/web.xml 을 사용하며 구문은 다른 application 설정과 동일하다.


4. <web-app>의 하위 엘리먼트

<classpath id='WEB-INF/classes'
source='WEB-INF/classes'
compile='true'/>

classpath를 지정한다. Source는 option이다. Servlets 과 beans는 일반적으로 WEB-INF/classes에 위치한다.

<session-config>
<session-max>4096</session-max>
<session-timeout>30</session-timeout>
<enable-cookies>true</enable-cookies>
<enable-url-rewriting>true</enable-url-rewriting>
<file-store>WEB-INF/sessions</file-store>
</session-config>

세션에 관한 설정이다.
Session-max : 최대 session 개수
Session-timeout : session timeout 시간(초)
Enable-cokkies : 쿠키 사용여부
Enable-url-rewritin :
세션을 아래의 방법중 하나를 사용하여 외부에 적재할 경우 개발 중 class 변경으로 인한 세션 삭제를 방지할 수 있다.
File-store : 세션을 지정된 디렉토리에 적재한다.
tcp-store : tcp-ring을 사용하여 세션을 적재한다.
Jdbc-store : DB table을 사용하여 세션을 적재한다.

<multipart-form upload-max='-1'/>
multipart-mime/form 사용을 가능하게 한다.

<path-mapping url-regexp='^/~([^/]*)' real-path='/home/$1/public_html/'/>
url path를 실제 path에 mapping한다.

<context-param info='An application information string'/>
Application init parameter이다.

<servlet-mapping url-pattern='/snoop/*' servlet-name='snoop-servlet'/>
모든 url에서 /snoop에 대하여 snoop-servlet 이름으로 접근한다.

<servlet servlet-name='snoop-servlet' servlet-class='Env'>
<init-param info='A servlet information string'/>
</servlet>

snoop-servlet init parameter로 info='A servlet information string'를 사용하여 구동한다.


출처 : http://jayclipse.egloos.com/

신고
Name
Password
Homepage
Secret
2007.08.29 11:21

귀하께서는 썬 마이크로시스템즈의 소식지 구독 회원이시므로 dakccom@naver.com 를 통해 이메일을 수신 받고 계십니다. 통신 관련 기본설정 업데이트를 원하시면 본 페이지 하단의 링크를 참조하시기 바랍니다. 당사는 귀하의 프라이버시를 보호하며, 썬의 프라이버시 정책에 관한 내용을 다음의 웹 사이트 상에 명확하게 게시해 놓고 있습니다: http://kr.sun.com/privacy

Sun Technology Day
JavaOne2007 Wrap-up 세미나
올해 JavaOne에서 개최된 내용 중 흥미로운 세션들을 모아 국내 개발자들에게 소개합니다.
특히, 썬의 회심작 JavaFX의 최신 내용을 접할 수 있는 본 세미나에
개발자 여러분의 많은 참여 바랍니다.
행사명: JavaOne2007 Wrap-up 세미나
일 시: 9월 7일(금) 오후 2시 - 5시 30분
장 소: 역삼동 포스틸타워 3층
참가비: 무료
일 정:
2:00 - 2:20  등  록
2:20 - 2:50  JavaOne2007 주요 이슈
2:50 - 3:40  JavaFX의 실체를 밝혀라
3:50 - 4:40  비주얼 개발 환경에 jMaki 이용하기
4:40 - 5:30  JSF, Hibernate, Spring을 이용한 웹 어플리케이션 개발 소개
강의 주제 보기 & 등록 신청>>

http://sdnkorea.com 에 방문하시면 sdnkorea 이벤트 당첨으로 자바원 행사에 다녀오신 김성현씨의 후기를 보실수 있습니다.
참가자분께는 소정의 기념품을 제공합니다.
본 세미나와 관련된 문의사항은 sdnkorea@sun.com으로 메일을 보내주시기 바랍니다.

감사합니다.
한국 썬 마이크로시스템즈


© 2007 Sun Microsystems, Inc. All rights reserved.

썬의 등록상표에 대한 자세한 내용은 다음 페이지를 참조하시기 바랍니다. http://kr.sun.com/suntrademarks/

뉴스레터 구독을 원하지 않으시면 [구독해지]를 클릭하시기 바랍니다.
고객님의 현재 구독정보는 [회원 구독 센터]에서 확인, 변경하실 수 있습니다.

135-798, 서울 강남구 삼성동 159-1 무역센터 아셈타워 15-16층
한국 썬마이크로시스템즈(주)

귀하의 주소록에 썬 이메일 주소를 추가하시면 좀 더 안정적으로 메일을 받으실 수 있습니다.

신고
닥컴마니아 | 2007.08.29 11:25 신고 | PERMALINK | EDIT/DEL | REPLY
올해 있었던 2007 sunTechDay 에 참가하지 못한게 너무나 아쉽다.
5만원이나 주고 신청만 해놓고 일때문에 못갔다.ㅡㅜ
시간만 허락해 준다면 괜찮은 세미나는 자주 가는게 좋다고 생각한다.
Peter_H | 2007.09.06 15:23 신고 | PERMALINK | EDIT/DEL | REPLY
하지만 넌 또 못간다는거~~ㅋㅋㅋㅋ
Name
Password
Homepage
Secret
prev"" #1 next

티스토리 툴바