WAS로 제우스를 쓰다가 지금은 JBoss로 넘어왔기에 웹로직을 접해본지가 벌써 6년전이네요.

오라클로 넘어갔다는 말을  얼핏 들었던거 같았는데 지금은 사이트도 오라클로 통합되었네요.

 

버젼이 10.x 네요. 와우~

참고한 블로그는 antop님의 블로그입니다.

사이트에서 10.1을 받았는데 antop 님은 10.3을 가지고 글을 쓰셨더라구여

이클립스 연동부분에서 버젼이 달라서인지 메뉴가 조금 다르다는 사실...

결국 10.3 을 다시 다운 받아 따라 해보았습니다. 참고하시길...

 

출처 : http://antop.tistory.com/

 

 

- 설치 환경



java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)



설치파일을 다운로드 받습니다.




- 다운로드 받은 설치파일을 실행합시다. (Net Installer - net_server103_win32.exe)




- Welcome~ Next...



- BEA Home Directory 설정후 Next



- Net Installer 에서만 나오는 설정입니다. 설치하면서 받을 파일 저장 위치를 지정합니다.



- 기본설치, 사용자설치 선택. 아무것도 모르겠다 하면 Complete 하시면 되겠죠... 저는 Custom로 합니다.




- 설치할 프로그램을 설정합니다.
Workshop은 Eclipse를 개량하여 최적화시킨 것입니다. 저는 Eclise를 따로 쓰기 때문에 패스.




- 사용할 JDK 를 선택합니다.
WebLogic 기본으로 1.6.0_05를 설치하는데 저는 1.6.0_12를 사용하기 위해서 따로 JDK를 추가 했습니다.




- JDK 1.6.0_12 쓸거냐고 물어보는군요... 가볍게 Yes




- 설치파일을 다운로드 받습니다. Net Installer 에서만 볼 수 있습니다.




- 다운로드 받은 설치파일을 검사합니다. Net Installer 에서만 볼 수 있습니다.




- WebLogic이 설치될 디렉토리를 설정합니다.



- Node Manager Service를 설치할지 설정.


- 시작메뉴를 전체 다 보여줄지 선택.. 윈도우 관련된 것이죠.. -_-/


- 설치될 파일들을 마지막으로 확인합니다.



- 설치 시작


- 설치가 완료되었습니다.




- 간단하게 설치가 잘 되었는지 확인하기 위해서....
시작 → 프로그램 → Oracle WebLogic → WebLogic Server 10gR3 → Examples → Start Examples Server 선택



http://localhost:7001/ 잘 되면 설치 완료!



- 서버 끄기 : 시작 → 프로그램 → Oracle WebLogic → WebLogic Server 10gR3 → Examples → Stop Examples Server 선택
※ 서버 끌때 그냥 cmd 창 닫아버리지 말고, 꼭 stop하는 명령(?)을 이용합니다.


- 설치하다가 이런거 나오면 윈도우 보안 관련된 것이니 '차단 해체' 선택해주세요.

 

지난 장에선 사설이 넘 길어 아파치 설치하는 것만 하고 마치고 말았다.ㅋ

트레이창에 아파치서비스 모니터링 아이콘을 확인할 수 있다. 오른쪽 마우스를 클릭 Open Apache Monitor를 선택하여 아파치를 구동/정지할 수 있다. 톰캣의 경우 압축만 풀면 되지만 아파치의 경우 설치하게 되면 서비스에  등록이 된다.

설치시 자동으로 초기설정되기 때문에 윈도우 시작등 리소스를 소모하는 부분도 있어

일단 먼저 Open Services를 클릭하여 Apache2.2를 자동에서 수동으로 변경한다(안해도 상관은 없다.대신 가끔 시스템이 느려질수 있다)

 

1. 이젠 톰캣을 설치하자.

http://tomcat.apache.org/ 에서 톰캣을 다운받는다. 현재 최신버젼은 6.0.18 .

 

톰캣설치는 앞서말한바와 같이 압축만 풀면 되니 설명은 패스. 설치할 디렉토리에 푼다.

 

2. http://tomcat.apache.org/download-connectors.cgi 에서 연동파일을 다운 받는다.

다운 받을 파일은 다음과 같다.

 

  • mod_jk-1.2.26-apache-2.0.59.so is for Apache 2.0, and works with Apache 2.0.59 and later.
  •    Rename to mod_jk.so before putting it in your Apache2/modules directory.

  • mod_jk-1.2.26-apache-2.2.4.so is for Apache 2.2, and works with Apache 2.2.4 and later.
  •    Rename to mod_jk.so before putting it in your Apache2.2/modules directory.

  • isapi_redirect-1.2.26.dll is for IIS 5 and later Web Server.
  • nsapi_redirect-1.2.26.dll is for Sun ONE Web Server 6.1 and later (formerly Netscape iPlanet).
  •  

    아파치2.2 이상은 mod_jk-1.2.26-apache-2.2.4.so 파일을 다운 받으면 된다.

     

    3. 다운받은 파일을 mod_jk.so로 이름을 변경후 아파치설치폴더/modules 에 복사한다.

     

    4. 아파치설치폴더/conf 에서 httd.conf를 수정한다

    LoadModule 어쩌구저쩌구 하는 부분 아래쪽에 다음과 같이 추가한다.

     

    LoadModule jk_module modules/mod_jk.so

     

    그리고 맨 아래 다음과 같은 구문을 추가한다.

    Include conf/mod_jk.conf

     

    5. 아파치설치폴더/conf에 mod_jk.conf 파일을 만들어 넣는다.

    아파치와 톰캣연동을 위한 설정부분으로 mod_jk.conf의 내용은 다음과 같이 작성하면 된다.

     

    JkWorkersFile "아파치설치폴더/conf/workers.properties"
    JkLogFile "톰캣설치폴더/logs/mod_jk.log"
    JkLogLevel error
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    JkRequestLogFormat "%w %V %T"

    JkAutoAlias "톰캣설치폴더/webapps"
    JkMount /*.jsp ajp13
    JkMount /servlet/* ajp13
    JkMount /jsp-examples ajp13
    JkMount /jsp-examples/* ajp13
    JkMount /url ajp13

    <Directory "톰캣설치폴더/webapps">
        Options Indexes FollowSymLinks
        allow from all
    </Directory>

     

    6. 아파치설치폴더/conf에 workers.properties 파일을 만들어 넣는다.

     

    workers.tomcat_home="톰캣설치폴더/webapps"
    workers.java_home="JDK또는 JRE설치위치"
    ps=/

    worker.list=ajp12, ajp13
    worker.ajp12.port=8007
    worker.ajp12.host=localhost
    worker.ajp12.type=ajp12
    worker.ajp12.lbfactor=1

    worker.ajp13.port=8009
    worker.ajp13.host=localhost
    worker.ajp13.type=ajp13
    worker.ajp13.lbfactor=1
    worker.loadbalancer.type=lb
    worker.loadbalancer.balanced_workers=ajp12, ajp13
    worker.inprocess.type=jni
    worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
    worker.inprocess.cmd_line=start
    worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
    worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stder

    7. 이제 아파치와 톰캣연동은 끝.

    아파치와 톰캣설정은 끝났기 때문에 이클립스에서 웹프로젝트를 작성 후 확인해보면 된다.

     

    이클립스에서 서버설정은 Window>Preferences>Server>Installed Runtime 에서 할 수 있다.

    톰캣은 Apache 폴더 아래에서  6.0을 선택한후 설치 디렉토리를 지정하면 되고

    아파치는 Basic폴더 아래에서 HTTP Server를 선택한 후 아파치 설치 디렉토리/htdocs 를 지정하면 된다.

    아니면 프로젝트 생성시 New Project에서 Static Web Project 또는 Dynamic Web Project를 선택 후

    Target Runtime의 옆에 있는 New 버튼을 클릭하여 등록할 수도 있다.

     

    전장에서 말한 바와 같이 dynamic content(서블릿,JSP,필터,관련메타데이터)를  제외한 content-based 웹 어플리케이션을 구현하고자 할때 static Web Project를 선택한다. 물론 당연히 dynamic Web Project에서도 static resource들을 등록/관리할 수 있다.

     

    특이한점은 Static Web Project의 경우 Dynamic Web Project와 달리 서버탭에서는 항상 status가 started 상태에 있다는 것을

    확인할 수 있다.처음엔 서비스로 등록되기 때문에 서비스를 죽이면 이클립스에서 Dynamic Web Project에서처럼 아파치를 구동/정지하지 않을까 하고 생각했는데 그것과는 무관했다. 첨엔 status가 started여서 http://localhost/img/sample.jpg 를 찾아보려 했는데 실패했다. (당시 당연히 서비스는 죽어있었지만...*^^*) 앞서 웹서버설정시 HTTP Server는 로컬 HTTP Server를 사용하는 것을 의미하기 때문에 프로젝트내 내용은 아파치설치폴더/htdocs아래 복사(동기화)된다. 

     

    다소 설정상의 귀차니즘은 있지만 설정이후의 컴파일 속도는 static resource를 빼고 수행하기 때문에 훨씬 빨라진 것을 확인 할 수 있을 것이다. 

     

     

     

     

     

    운영중인 WEB시스템을 보면 정적인 페이지와 동적인 페이지를 구분해서 관리하곤한다.

    가장 일반적으로는 정적인 페이지는 아파치에서 동적인 페이지는 톰캣에서 구동되도록 하고 있는데...

    왜 그런걸까?

    현재 톰캣에서 http spec을 지원(즉 웹서버기능을 포함)하고 있기 때문에 굳이 옛날처럼 웹서버와 어플리케이션 서버를 구분할 필요가 있을까? 물론 간혹 이제까지 해왔기 때문에 라는 이상한 논리를 펴시는 분들은 아마도 이제까지 그리 해오는것이 당연하게 생각해왔기 때문은 아닐까? 하지만 구분하시는 분들은 시스템의 퍼포먼스를 위해서라는 나름 경험적인 말들을 하곤하다.

    반대로 예전에는 톰캣에서 웹서버 기능을 지원하지 않았지만 지금은 톰캣만으로 충분하다고 말씀하시는 개발자분들도 계시다.

    내 개인적인 생각은 둘다 맞는 것 같다. 분명 정적페이지만을 아파치에서 관리하게 되면 정적인 파일에 대해서도 동적구동루틴의 타게 함으로써 생겨나는 부하를 줄이게 되기 때문에 퍼포먼스를 줄일 수 있다(즉 정적인 페이지를 요청하는 횟수가 줄이게 됨으로써 네트워크의 부하를 줄임). 또한 이미지의 경우 전송되는 헤더의 크기가 훨씬 적어지기 때문에 더 나은 퍼포먼스를 가지게 된다.(즉 쿠키가 필요없는 이미지파일에 대한 요청에 대해 정적인 페이지에서 헤더에 포함되어 전송되기 때문에 전송패킷의 크기는  달라진다. 이미지 파일크기가 달라진다는 의미는 아님.도메인 분리에 대한 헤더파일 크기 비교는 링크페이지 참조). 또한 작은 이미지의 경우 톰캣이나 아파치나 큰 성능차이는 없지만 큰 이미지의 경우 아파치에서 구동하는 것이 훨씬 빠르다고 한다. 하지만 요새 운영시스템의 사양은 톰캣이나 JBoss같은 WAS만을 구동하기엔 너무나 고사양이다.

    즉 어떤 시스템인가에 따라 다르긴 하지만 톰캣하나만으로도 웬만큼 충분하다는 말이다.

    일반적으로 개발할때는 톰캣하나만으로 개발하다가 운영시 분리하곤 한다. 하지만 난 오히려 운영보다는 개발할때 분리를 해야 한다고 생각을 한다. 어떤 개발자분들을 보면 작업표시줄에 수많은 프로그램이 떠 있는 상태에서 개발하곤 한다. 물론 디버깅이나 모니터링때문에 텔넷창을 여럿 띄어두기도 하고 웹브라우저도 몇개 띄어두고 이클립스랑 기타 성능관리 툴, 워드파일이니 엑셀파일도 열고. 크 놋북사양이 부럽다는 생각만 든다. (나도 물론 여럿 띄워둔채 개발하긴 하지만..). 현재 이클립스 3.4를 가지고 개발하고 있는데 다이나믹 웹프로젝트로 프로젝트를 만들고 개발 소스가 많아질수록 초기 구동시 등록된 Context를 동기화 하면서 간혹 구동에 실패하곤 한다. (물론 재시작하면 정상구동이 되거나 계속 실패가 반복되는 경우 디버깅모드를 ERROR로 바꿔 재구동하면 해결된다). 그래서 다이나믹 웹프로젝트에는 JSP만을 올리고 나머진 static 웹프로젝트로 만들어 처리하여 톰캣 초기구동시 걸리는 시간을 줄일 수 있다.

    아 사설이 넘 길었다. 후딱 후딱 지나가야지..

    먼저 아파치를 설치한다.

    우선 Apache 서버를 설치해 보기로 보자.

    http://httpd.apache.org/ 에서 아파치를 다운받는다. 최신 버젼은 2.2.9.


    다운받은 Apache 설치 파일을 실행시킨다. 실행버튼 클릭!!

    실행후 바로 나타나는 화면이다. Next 버튼 클릭 !!



    라이센스!! 사실 읽어보는 사람 잘 없을거다. 게다가 영어다. ㅋ
    약관에 동의를 해야지만 설치가 가능하다.
    약관 아래쪽 2개의 항목중 위에 있는 I accept the terms in the license agreement 를 선택후 Next 클릭 !!



    실행하기 전에 읽어보라는데 이것 역시 영어다. 패스!! Next 버튼을 클릭!!
    한번쯤 읽어 보시기를 권장한다. ㅎㅎ



    아래 입력박스에 해당하는 도메인정보와 이메일 정보를 입력한다.지금 입력되어 있는 것은 내가 임의로 입력한 내용으로 각자에게 알맞는 정보를 입력하면 된다. 그리고, 아래쪽에 있는 항목은 IIS가 설치되어 운영중일 경우 그러니까 80번 포트가 아닌 8080이나 기타 다른 포트를 사용할 경우에는 아래쪽을 선택하고 그냥 기본으로 설치하고자 한다면 위쪽 항목을 선택하면 된다.
    입력과 선택을 마쳤다면 Next 버튼을 클릭 !!



    설치 타입은 기본으로 해도 되고 사용자 선택(Custom)으로 설치 해도 상관없슴.Next 버튼을 클릭 !!


    설치 디렉토리를 지정하고, Next 버튼을 클릭 !!기본으로 두고자 한다면 그냥 넘어가면 되고, 다른 디렉토리에 설치를 원하면  Change 버튼을 눌러 설치하고자 하는 디렉토리를 선택하면 된다.

    Install 버튼을 클릭하면 자동으로 설치된다.

    Finish 버튼을 클릭하고 설치 프로그램을 빠져 나가면 된다.

     

    설치과정에서 기본 포트(80)을 선택하였다면, 웹브라우저를 실행시켜서 아래와 같이 입력해본다.

    다음과 같은 내용이 웹브라우저에 표시된다면 정상적으로 설치된 것이다.
     

     

     

    [WTP] CHKJ4019W Warning

    개발 이야기/이클립스 | 2008. 2. 25. 13:20
    Posted by 시반

    이클립스 WTP에서 dbcp설정을 하기위해 tomcat(v5.5)의 web.xml에

       <resource-ref>
          <description>Oracle</description>
          <res-ref-name>jdbc/데이타소스명</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
        </resource-ref>

    을 추가했다.

     

    헌데 CHKJ4019W: Invalid res-sharing-scope; valid values are "Shareable" or "Unshareable". 라는

    warning 문구가 web.xml에 반짝거리는것이 아닌가?

     

    dbcp 설정이 좀 변한것이 있나 싶어서 dbcp로 검색해봐두 그런부분은 없는데...

    정말 인터넷이 없다면 어떻게 개발할까 고민이..ㅋ_ㅋ

     

    The bean provider can control the extent that connections are shared. By default, other enterprise beans in the application that use the same resource in the same transaction context can share the connection. The bean provider can set the res-sharing-scope deployment descriptor element to Unshareable to indicate that a connection not be shared. Keep in mind, though, that sharing connections to a resource manager allows the container to optimize connection and local transaction use. It is recommended that connections be marked Shareable

     

    이런이런 애써 찾은것이 영어라니.. 힘들군.. 대충 짧은 영어실력으로나마 해석해보면

    같은 리소스를 사용하는 (웹)어플리케이션에서 빈끼리는 커넥션을 공유할 수 있으며

    container 설정을 통해 관리될수 있다.(추천사항은 Shareable) 

     

    설명은 복잡하지만 한 마디로

     <res-sharing-scope>Shareable</res-sharing-scope>

    문구를  <resource-ref/> 안에 추가해주라는 말이다.

     

    시간이 흘러갈수록 점점더 내가 무엇을 알고 있나 하는 생각이 끊이질 않는다.

    아싸. 힘내자...

     

     
    데이타의 전송은 객체건 뭐건 결국 바이트의 흐름으로 전송하게 된다. 저장도 그렇고...
    다시 읽었을 때 객체의 자료구조를 그대로 보존하지 않으면 않된다.(일명 Serialzation)
    자바에선 Serializable 인터페이스만 구현하면 알아서 이를 보장해주기에 단지 implements Serializable 만 추가하면 된다.
     
    일전에도 언급한 적이 있지만 5.0 이후부터는 Serialzable 인터페이스를 구현한 클래스에서
     static final long 타입의 serialVersionUID 상수를 선언하라는 경고문구를
    이클립스의 노란 warning 아이콘과 더불어 확인 할 수 있다.
     
    만일 serialVersionUID를 지정하지 않으면 실행시점에서 JVM이 디폴트 값을 산정하게 되며,
    그 알고리즘은 Java(TM) Object Serialization Specification 정의된 것을 따른다고 한다.
    한마디로 굳이 신경 쓸필요는 없다는 뜻이고 이클립스내에서 이 경고아이콘을 제외하도록 설정할 수도 있다.
     
    그러나 모든 serialization이 필요한 클래스에는 명시적으로 serialVersionUID를 선언해줄것을 강력하게 권유하고 있는데
    그 이유는  디폴트 serialVersionUID 계산은 클래스의 세부 사항을 매우 민감하게 반영하기 때문에 컴파일러 구현체에 따라서 달라질 수 있어 deserialization(serialization 했던 객체를 복구하는 과정)과정에서 예상하지 못한 InvalidClassExceptions을 유발할 수 있다.
    라는 것이 그 이유란다.
     
    즉 서로 다른 자바 컴파일러 구현체 사이에서도 동일한 serialVersionUID값을 얻기 위해서는 명시적으로 serialVersionUID값을 선언해야 하며 가능한 serialVersionUID을 private으로 선언하라는 것이다.
    (상속되어 쓰여지는 것은 유용하지 않고, 해당 클래스에서만 쓰일 것이기 때문에....)
     
    이궁 이렇게 이야기하는데 한줄 더 써주지 머...
    ㅋ 말은 이리 하지만 무진장 귀찮다. serialver.exe를 이용하면 된다는데 다른 건 없나 찾아보게 되었다
     
    첨부파일을 압축을 풀고 이클립스 플러그인 디렉토리에 넣어두면 자동생성 플러그인 설치는 끝
    3.3에서도 이상없이 작동한다. 사용방법은 다음과 같다.
    파일을 선택 마우스 오른클릭하면
    Add serialVersionUID 라는 메뉴가 추가 되어 있는것을 확인할 수 있다. 클릭...
     
     
     
    그러면 다음과 같이 클래스에 serialVersionUID가 자동 생성되었슴을 확인할 수 있다.
    간단히 private 만 적어주면 끝...
     
     

    PS. 이클립스 3.3 이후부터는 해당플러그인을 설치할 필요없이 노란 Warning 경고 아이콘 부분을 클릭한 후 add generated serial version UID 를 선택하면 UID가 자동생성됩니다.
     
     
     

    Java 클래스 코딩의 기본적인 룰 중 하나가,
    코드 내에서 발생될 수 있는 '모든' 예외는 검출되 않으면 안되며, 발생된 예외는 반드시 처리되지 않으면 안된다.
    입니다.

    허나 코딩에 익숙한 프로그래머라도 모든 예외상황을 일일이 다 기억할수가 없기때문에 컴파일러에서 보내주는 메세지와 API 레퍼런스 이용할수 밖에 없습니다.

    보통 모든 예외를 공통클래스에서 처리하는 방법은 사용하기도 하지만, 엄밀하게 따지자면 예외형태에 따라 처리방법을 설계/코딩하는 것이 바람직합니다.

    Eclipse의 try/catch블럭 자동생성 기능을 사용하면 이러한 코딩의 번거로움을 줄이고 예외처리 자체에 좀더 집중할수 있습니다.

    사소하게 보일수도 있으면 이런 사소한 기능을 알고있으면 실제 코딩시 손에 익게되면 상당히 큰 도움이 될수도 있습니다.

    먼저 예외처리가 발생할 지점을 블럭지정한 후 마우스 오른쪽 클릭 surround with 를 선택한후 try/catch block 를 선택합니다.

    (try/catch외 for/do/if/while등을 지정할수 있습니다.)

     

     

     

    다음과 같은 예외처리 구문이 자동 생성됩니다....*^^*


     

     

     

     

     

     

     

    '개발 이야기 > 이클립스' 카테고리의 다른 글

    [WTP] CHKJ4019W Warning  (0) 2008.02.25
    [Eclipse] serialVersionUID 자동생성하기  (0) 2008.02.05
    [Plug-In] UML2  (0) 2008.01.31
    OutOfMemoryError: PermGen space 에러문제  (0) 2008.01.29
    이클립스로 JAVA API 열기  (0) 2007.12.21
     

    [Plug-In] UML2

    개발 이야기/이클립스 | 2008. 1. 31. 11:04
    Posted by 시반
     
     
    프로젝트를 시작할 때면 개발환경 세팅하네.. 시스템 설계하네.. 산출물 작성하네...
    나름 바쁜 일정을 보내게 된다.
    솔직히 UML툴을 통한 코드 생성은 그닥 써보지 않아서..
    첨엔 와~ 코드가 자동으로 생성되네... 감탄했던 적도 있었지만
    불필요한 코드가 많이 생성되기도 하고 세밀한 설정은 좀 힘들었기에 실제로는 설계산출물용으로만 쓰게 되었다.
    Together, MyEclipse, EclipseUML 등 여러가지 써봤지만 젤 첨에 썼던거라 그런지 together가 젤 편한 듯 하다는건
    갠적인 사견일 뿐이다. 모두 이클립스 플러그인으로 제공되고 있긴 하지만 무료라기 하기엔 기능제한도 있고(정품등록 필요)
    단순한 설계 산출물용만으로 쓰기엔 용량도 만만치 않다.
    단순하게 도표만 만들어주는건 없나 찾다 발견한것이 UML2다.
    아직 인큐베이션 단계이기 때문이라서 아직 도표만 만들어줄뿐이지만
    딱 내가 원했던 기능이라 만족한다. 물론 용량이 적다고는 할수 없지만 다른 것들에 비해 상대적으로 적다는게 장점(?)
     
    일단 설치를 해보자.
     
    아래 강조한 부분을 모두 받아서 특정 디렉토리에 모두 풀어놓는다.
    ##########0*
     
     
    실치후 아래처럼 UMLClass Diagram을 선택한 후 그리면 된다.
    ##########1*

    앞서 말했지만 이클립스에서 할 수 있는 건 아직까지 도표를 만드는 기능뿐이라는 점. 역시 사용방법은 다른 것들이랑 별 차이는 없다....*^^*
    ##########2*
     

    개발을 하면서 이클립스를 빼놓을수는 없다. 매번 프로젝트가 끝날때마다.

    버전업하면서 바뀐부분이 무엇인지를 확인해보곤 하는데

    이번 이클립스 3.3 europa 버젼은 좀 문제가 있는 듯 하다

    3.1 이나 3.2에서는 별 이상이 없는데 3.3에서만 PermGen space  메모리 에러가 발생하면서 이클립스가 죽어버린다

     

    PermGen은 클래스명 내부String같이 가비지 콜렉팅에 해당되지 않는 객체들을 위해 영구적으로 생성된 영역이라고 한다.

    이부분에서 메모리 부족이 생기는것이 에러의 발생원인이라고 하는데

    내 경우엔 기존의 프로젝트를 불러온 것도 아니고 단순히 프로젝트 하나 만들어 테스트페이지 하나 만들면서 설정파일을 읽어들이기만 하면

    PermGen space 에러를 뿌려댄다.

    나뿐만 아니라 Run AS.. 같이 ant를 실행시키거나 외부프로그램을 실행할때 그런 일이 발생한다는 주변인의 말을 들어보면

    이클립스나 SUN vm의 버그가 아닌가 생각된다

     

    기냥 3.2 버젼을 쓰면 별 상관이 없겠지만 일단 3.3을 사용하려고 한다면 임시 방편으로

    이클립스 실행옵션에 MaxPermSize를 늘려주거나 이클립스내 외부프로그램 실행옵션 중 jre 부분의 Default VM Arguments 를 변경해주면 된다. 머 이방법은 3.3이 아니라 이전버젼에서도 메모리 부족 현상이 일어날때 공통적으로 적용가능한 방법이다

     

    좀더 상세히 적어보면

    먼저 MaxPermSize를 충분히 설정해주는 방법인데

    eclipse -vmargs -XX:PermSize=256M -XX:MaxPermSize=512M

     

    이렇게 하면  실행시 VM옵션이 적용된다고 하는데 

    플러그인 같은걸 많이 등록한 경우엔 이클립스 구동속도가 조금 빨라진다는 느낌이 들지만

    ant 같은 외부 프로그램 실행시에는 여전히 같은 메시지를 뿌려대는건 마찬가지이니

    아마 외부프로그램과는 좀 무관한 설정같다는 생각이 든다.

     

    아니면 이클립스 홈디렉토리의 eclipse.ini 파일의 옵션을 변경해도 된다

    -showsplash
    org.eclipse.platform
    --launcher.XXMaxPermSize

    512m
    -vmargs
    -Xms40m
    -Xmx256m
    -XX:MaxPermSize=512

     

    설정시에 3번째 라인처럼  lancher 옵션으로 MaxPermSize를 지정해도 된다고 하는데

    유로파버전에서는 lancher옵션이 잘 적용되지 않는도고 하니 기냥 하단에 옵션을 추가하면 된다.

     

    두번째 방법은 외부프로그램실행시 PermGen 메모리 부족이 발생하는것을 막기위해서 jre 옵션부분에 위의 옵션들을 넣어주는것이다. 

     

    1. Window > Preperences ..

    2. Java > Installed JREs 에서 사용중인 jre 나 jdk 클릭

    3. 오른쪽메뉴의 Edit.. 클릭

    4. Default VM Arguments 항목에

       -vmargs-Xms40m -Xmx256m -XX:MaxPermSize=512m

      입력후 확인

     

    일단 이리하면 에러는 많이 없어지지만 3.2를 쓸지 3.3을 쓸지 고민을....

     

     

    이클립스로 JAVA API 열기

    개발 이야기/이클립스 | 2007. 12. 21. 14:48
    Posted by 시반

    인터넷을 돌아다니다 이클립스에서 클래스의 API문서를 열수있도록 하는 기능이 있다는 사실을 알게되어 소개한다

    출처는 무소유 평상심 님의 블로그입니다.

    사용된 Eclipse SDK Version: 3.1.1라고 하셨는데 상위 버젼에서도 동일한 설정을 유지하고 있더군여

    제가 확인한건 3.1.2 와 3.2.1 이었습니다.

     

    Eclipse에서 해당 API문서를 볼수 있는 방법은 Java Class에 커서를 놓고 Shift + F2 누르면  됩니다.

    하지만 그러기 위해선 간단한 설정이 필요하다는 거...

     

    기본적으로 세팅을 하지 않는다면 다음과 같은 화면이 나오게 됩니다.

     

     


    해결 방법은 해당 프로젝트를 선택하고  마우스로 Right Button을 Click하여 Popup을 호출하여

    Properties Window를 호출합니다.

     

     

    오른쪽의 Java Build Path 를 클릭하고 JRE System Librart의 트리를 확장하여 rt.jar 트리도 확장을 하면 Javadoc location이라는 속성이 보인다. 클릭하여 Edit버튼을 클릭하여 아래와같이 값을 세팅합니다.

     

     

    위의 화면의 경우 java API가 있는 경로를 지정해주는 경우입니다만 웹URL인 경우엔 혹여나 인터넷이 끊겨있다면 볼수 없구

    그래서 로컬로 지정했습니다. documenatation을 풀고 위 화면처럼 경로명을 지정해도 됩니다만

    전 다음과 같이 압축된 파일형태로 지정했습니다.

     

     

    Archive path는 압축파일 위치를 말하는 거구 Path within archive는 압축파일내 api 위치를 말합니다.

    첨에 압축파일만 지정하면 되는줄 알았는데 빈 페이지만 뜨더군여.

    아래항목에 대하여 browser 버튼을 클릭하면 압축파일내 파일정보가 표시됩니다.

    기본적으로 api가 위차하는 폴더가 표시됩니다(위의 화면의 docs/api)

    결국 기냥 닫으면 docs/api로 설정.

    그럴거면 기냥 디폴트값으로 압축파일을 선택시 지정되었슴 편했을거라는 생각도 잠시 해봤습니다.

     

    적용하여 JRE Class변수에서 Shift + F2를 누르면  클래스의 API로 이동한 익스플로러 창이 열리게 됩니다.

    F1을 누를 경우엔 이클립스 내부에서 Java API로 연결하여 볼수 있습니다.

     

     

    이클립스를 이용하여 EJB를 deploy 하는 중에 나오는 메시지...

     

    Heap size가 어쩌구 저쩌구..ANT_OPT=-Xmx640m

     

    한마디로 deploy할 ejb의 크기가 크니 heap size를 추가하라는 말 아닌가..

     

    어느 누구는 이클립스를 실행하기 전에 set ANT_OPT=-Xmx640m 를 콘솔에서 입력후 실행하라하기도 하고 이클립스 실행스크립트의 eclipse.exe -vmargs -Xms256M -Xmx640M 로 바꿔주라기도 하구. 이클리스의 패키지 익스플로어에서 프로젝트의 오른쪽 클릭 후 Run..(Run메뉴의 Run..을 선택해도 됨)에서 JVM설정에서 추가하면 된다는 둥 다양한 방법을 검색할 수 있었다.

     

    크~ 문제는 다 안됐다는 점...

    (실행환경은 이클립스 3.1.2/myEclipse4.1 과 이클립스3.2/myEclipse5)

     

    아마 이클립스 버젼마다 틀린가보다 하고 여기저기 해보다 결국 찾아냈다.

     

    1.Run 메뉴의 External Tools > External Tool..를 선택한다

    2.Main 탭에서 build.xml의 위치를 확인한다

    3.Jre 탭의 VM arguments에 -Mmx640m를 추가한다

    4.Apply를 클릭후 다시 deploy....

     

    오읏 이제사 성공..

    오랫만에 EJB로 개발하다보니 이런 설정도 가물가물...

     

    myEclipse를 쓰면서 개발하기 많이 편했졌다는 생각을 가지지만

    EJB 모듈개발은 개인적으로 Lomboz가 더 편한듯 싶다.

    '개발 이야기 > 이클립스' 카테고리의 다른 글

    [Plug-In] UML2  (0) 2008.01.31
    OutOfMemoryError: PermGen space 에러문제  (0) 2008.01.29
    이클립스로 JAVA API 열기  (0) 2007.12.21
    java warning: no definition of serialVersionUID  (0) 2007.05.17
    eclipse tutorial - workbench  (0) 2006.09.02
     
    블로그 이미지

    시반

    시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

    카테고리

    분류 전체보기 (233)
    개발 이야기 (73)
    Java (22)
    VoIP (19)
    이클립스 (22)
    ORM (6)
    MINA (4)
    WEB2.0 (57)
    DB2 (24)
    MySQL (6)
    오라클 (26)
    기타 (44)
    취미 (0)
    잡담 (2)