Posted by 즐건세상
l
String path = this.getClass().getResource("/").getPath();
Posted by 즐건세상
l
이클립스에서 jar 파일을 만들고 변경된 내용에 대해서 jar 파일을 다시 만들지 않고 바로 적용하는 방법에 대해서 알아보고자 한다.

먼저 이클립스에서 jar 파일로 만들고 싶은 프로젝트를 선택하고 마우스 오른쪽 버튼을 누르게 되면 export 메뉴가 보인다.

그림과 같이 jar file을 선택한다.


프로젝트에서 jar 파일로 만들고자 하는 파일을 선택한다. 다음으로 jar 파일의 이름과 저장위치를 저장해줘야 한다.

그림에서 Browse.. 버튼을 클릭해서 저장위치를 선택한다. jar 파일의 이름과 저장위치를 선택한 다음 next 버튼을 누른다.
 

그림과 같이 save the description 체크 박스를 선택하고 Browse 버튼을 선택한다. 이 파일을 만들어서 변경된 내용을 기존의 jar 파일에 바로 적용할 수 있다.

jardesc 파일의 저장위치와 이름을 설정한다.


jardesc 저장위치와 이름을 저장하게 되면 아래와 같이 된다.


마지막으로 finish버튼을 누르게 되면 jar 파일과 jardesc 파일이 만들어지게 된다.

jar 파일이 만들고 변경된 내용을 적용시키고 싶으면 그림과 같이 jardesc 파일을 선택한 다음 마우스 오른쪽 버튼을 선택하게 되면

아래와 같은 그림을 볼 수가 있다.

메뉴에서 create jar 파일을 선택하면 변경된 내용이 적용된 jar 파일이 만들어지게 된다.

jar 파일을 수정하고 싶은 경우 예를 들어 jar 파일에서 파일을 빼고싶거나 또는 추가 시키고 싶은 경우 Open JAR Package 버튼을 누

르게 되면 jar 파일에 대한 옵션과 jar 파일을 수정할 수가 있다.




Posted by 즐건세상
l

log4j 설정

IT/java 2008. 7. 8. 23:49
서버 프로그래밍을 하면서 에러를 찾기 위해서 이클립스에서 디버깅을 하면서 찾기에는 어려움이 많다. 여러건의

 request 가 동시에 발생할 경우에 에러가 발생하게 되는 경우에는 이클립스 디버깅 화면에서 버그를 찾기는 쉽지

가 않다. 이럴 때는 가능한 많은 로그를 남겨서 디버깅을 해보는게 더 효과적일 수 있다.

log4j 매뉴얼만 가지고는 log4j를 제대로 사용하기에는 좀 어려운 부분이 없지 않아 있는거 같다. 나도 처음에는

로그 파일 하나에 모든 로그를 남기고 로그 레벨 조정하는것도 별로 관심이 없었다.

그런데 실제 프로젝트를 하다보면 업무별로 로그를 남겨야 하는 경우도 많고 심한 경우에는 사용자 별로 로그를 남

겨야 하는 경우도 발생할 수 있다. log4j에서는 이 모든것을 지원해준다. 그러나 log4j/doc에 있는 문서만 바서는 이

런 기능들을 활용하기에는 어려울거 같다. 문서에는 Logger barlogger = Logger.getLogger("com.foo.Bar"); 와 같은 문장들이 많다. 아니면 Logger.getLogger(Bar.class); 이런 문장들이 많다. 이렇게 사용할 경우에는 업무별로 로그를 남기기는 어렵다. 물론 패키지별로 독립성이 띄어날 경우에는 문제가 없지만, 그런 경우는 거의 없을것이다. 그럼, 어떻게 하느냐 하면 만약 로그인과 관련된 업무라면 Logger logger = Logger.getLogger("Login");  과 같은 형태로 쓸 수도 있다. 꼭 클래스의 이름일 필요는 없다는 것이다. 물론 이렇게 하기 위해서는 log4j 프로퍼티 파일을 이에 맞게 기술되어 있어야 한다. 프로퍼티 파일을 예를 들어보면,

log4j.rootCategory=DEBUG, console, totallog

log4j.logger.login_log=DEBUG, login

log4j.appender.totallog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.totallog.File=${logging.path}/logs/total.log
log4j.appender.totallog.DatePattern='.'yyyy-MM-dd
log4j.appender.totallog.layout=org.apache.log4j.PatternLayout
log4j.appender.totallog.layout.ConversionPattern=%d{HH:mm:ss} %5p (%C{2} - %M:%L) - %m%n

log4j.appender.login=org.apache.log4j.DailyRollingFileAppender
log4j.appender.login.File=${logging.path}/logs/login.log
log4j.appender.login.DatePattern='.'yyyy-MM-dd
log4j.appender.login.layout=org.apache.log4j.PatternLayout
log4j.appender.login.layout.ConversionPattern=%d{HH:mm:ss} %5p (%C{2} - %M:%L) - %m%n

이런 식의 프로퍼티 파일을 기술한다면 Logger logger = Logger.getLogger("login"); 와 같이 사용할 수가 있다.
프로퍼티 파일을 보면 rootcategory 에 totallog가 존재하고 그 자식의 로그로 login 로그가 존재하게 된다.
totallog 에는 getLogger() 해서 사용하는 모든 로그가 쌓이게 되고, login.log 파일에는 getLogger("login") 사용한 로그만 남게 된다.
log를 남길 파일 위치를 기술하는 log4j.appender.login.File 값으로 {logging.path} 가 있는데 이 값은 System.getProperty("loggin.path") 해서 가지고 오는 값이다. 사용자가 System.setProperty("logging.path","c:\abc") 이런식으로 설정해 주면 된다는 것이다. 이렇게 하는 이유는 유연성을 높이기 위해서인데 절대 경로를 지정할 경우 디플로이 되는 서버가 바뀐다거나 했을 경우 프로퍼티 파일을 수정하지 않더라도 에러없이 돌아가게 하기 위해서이다. 주로 톰캣이나 다른 웹 서버에 디플로이 할때 contextroot path를 코드로 얻을 수가 있다. 이 값을 System 프로퍼티에 할당해 주게 되면 프로젝트를 새로 디플로이하더라도 프로퍼티 파일을 수정하지 않아도 된다.
로그를 남기는 패턴은 http://www.vipan.com/htdocs/log4jhelp.html 여기로 가면 잘 설명되어 있으므로 참고하기 바란다.



Posted by 즐건세상
l


■ 이클립스 편집에 관련된 단축키

 - Ctrl + Alt + 방향키(위or 아래)
한라인이나 선택한 블록 라인을 복사한다. 이 단축키는 반복되는 문장이 많을 경우 굉장히 유용하다. 또한 클립보드에 데이터가 저장되어있더라도 지워지지 않는다.

 - Alt + 방향키(위or 아래)
한라인이나 선택한 블록 라인을 이동시켜준다. 지역변수에 멤버 변수로 옮기고자 할 때 유용하다.

- Ctrl + shift + 방향키(왼쪽 or 오른쪽)
사용자 삽입 이미지


단어(토큰) 별로 선택하게 해준다.

- Alt + Shift + 방향키(왼쪽 or 오른쪽)
사용자 삽입 이미지

  

- Ctrl + shift + x
 영문자를 대문자로 만들어준다.
- Ctrl + shift + y
 영문자를 소문자로 만들어준다.

■ 화면 이동에 관련된 단축키
- Ctrl + F6
 열려 있는 파일의 탭 전환 기능
- Ctrl + F7
 view 전환 기능
- Ctrl + F8
 perspective 전환기능
- Ctrl + 방향키(위 or 아래)
스크롤 기능

- Ctrl + q
 마지막 에디트 했던 위치로 이동
- Alt + 방향키(왼쪽)
히스토리에 저장되어 있는 위치중 이전에 있던 위치로 이동
- Alt + 방향키(오른쪽)
히스토리에 저장되어 있는 위치중 다음 위치로 이동
- Ctrl + e
파일이 많이 열려있을 경우 내가 찾고자 하는 파일이 안보일 경우가 있다. 이때 이 단축키를 사용하면 열려있는 모든 파일들을 볼수가 있다. 여기서 파일이름 몇개를 입력하게 되면 원하는 파일을 쉽게 열수가 있다

- f2
 커서를 메소드 위치에 놓아둔 상태에서 f2를 누르게 되면 이 메소드의 리턴 type이나 인자의 타입, 갯수 정보를 알 수 있다
-f3
커서를 메소드나, 클래스에 위치해서 f3 를 누르게되면 클래스나, 메소드가 정의되어 있는 위치로 이동하게된다.
-f4
커서를 클래스에 위치해서 클래스의 계층 구조를 보여준다.
- Ctrl + shit + r
이 단축키를 누르게 되면 창이 하나 뜨는데 이 창에서 파일 이름을 입력하게 되면

워크스페이스에 열려있는 프로젝트에서 파일을 찾아준다. java 파일 뿐만아니라 jsp, propeties 등 모든 파일을 찾을 수가 있다.

■ 검색기능
 - Ctrl + k
 검색할려는 키워드를 드래그하고 이 단축키를 누르게 되면 현재 열려있는 파일에서 검색을 한다.

 검색 방향은 현재 커서위치에서 아래로 찾는다.
- Ctrl + Shift + k
 위의 기능과 똑같은 기능을 한다. 다만 검색 방향이 현재 커서위치에서 위로 찾는다.

- Ctrl + h
 이 단축키는 프로젝트 단위나 워크스페이스, workset 에서 문자열이나 클래스 등을 검색할 때 유용하다.
한 프로젝트에서만 검색하고 싶은 경우 프로젝트를 선택하고 이 단축키를 누르게 되면 선택한 프로젝트에서만 검색이 된다.

- reference
클래스 이름이나 메소드이름을 선택하고 마우스 오른쪽 버튼을 누르면 reference 메뉴를 볼 수 있다.
이 기능은 클래스나 메소드를 참조하고 있는 부분을 찾아준다.

- Ctrl+Alt+h
이 단축키는 메소드의 호출 순서를 계층적으로 보여준다.



Posted by 즐건세상
l
ibatis를 사용하다 보면 로그가 많이 보이는데 안보이게 하고 싶으면
로그레벨을 다음과 같이 조정하면 된다.

log4j 설정파일이 프로퍼티 파일로 되어 있는 경우는 아래와 같이..
log4j.logger.com.ibatis=INFO
log4j.logger.java.sql=INFO

xml로 되어 있는 경우는
   <category name="com.ibatis">
<priority value="debug" />
</category>

<category name="java.sql">
<priority value="debug" />
</category>

Posted by 즐건세상
l


이클립스에서 탭 전환하는 단축키가 Ctrl+F6 로 되어 있는데 이를 자주 쓰는 단축키인 Ctrl+Tab 키로 바꿔보자
사용자 삽입 이미지

아래 그림에서
1.RemoveBinding 을 클릭해서 디폴트로 설정되어 있는 바인딩을 제거한다.

2.Binding 박스에서 Ctrl + Tab 키를 누른다

3.apply 버튼을 클릭해서 변경된 내용을 저장한다.
저장하고 나면 바로 Ctrl+Tab 키를 사용할 수 있다.
사용자 삽입 이미지



Posted by 즐건세상
l

자바 charset 설정

IT/java 2008. 2. 13. 17:03
String str ="한글";
byte[] b1 = str.getByte();
byte[] b2 = str.getByte("UTF-8");

Posted by 즐건세상
l

log4j tomcat 설정

IT/java 2007. 11. 7. 21:14
log4j를 사용하면 좋은 이유를 몇가지 들자면,
1) 성능 문제
  로그를 파일로 남기는 경우 파일 사이즈의 제한을 작게두게되면 파일에 대한 I/O가 자주 발생해서 성능을 떨어뜨리는 일이 발생하는 경우가 있다.
2) 로그 레벨 조정
  로그레벨을 실행중에 동적으로 조정이 가능하다. 로그레벨이 info 이상인 경우만 로그에 남게 하겠다던지, error 이상일 경우만 남겠다던지 이런 조정이 가능하다.
3) 응용 기능
  fatal error 가 났다던지 아님 로그 리포트 같은걸 메일로 받고 싶은 경우 로그 설정파일을 설정해주면 가능하다.

log4j 는 크게 3개의 component로 구성되어 있다.


log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.Embedded).
log4j:WARN Please initialize the log4j system properly.

Posted by 즐건세상
l
가끔 소스를 다운 받았는데 .project 파일만 있는 프로젝트 파일은 있는데 빌드 환경이 설정되지 않아서
이클립스의 다양한 기능을 사용할 수가 없는 경우가 있다.
.project 파일만 있는 경우의 아이콘
위 그림에서 보면 아이콘이 틀리다는 것을 알 수 있다. 이는 빌드할 수 있는 환경이 설정되지 않았기 때문에 나타나는 모습니다.
프로젝트의 속성을 보면
사용자 삽입 이미지
그림을 보면 Builders 에 아무것도 없다. 이런 경우 New를 해서 빌드할 수 있는 환경을 만들어 줄수 도 있겠지만 힘들다. 그래서 환경 파일을 수정해서 빌드 환경을 만들어준다.
.project 파일을 메모장이나 울트라에디트 같은 것으로 열어보면
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>Auction-mid-imageupmid</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
    </buildSpec>
    <natures>
    </natures>
</projectDescription>
이런 형태로 되어 있다.. 뭔가 빈약해 보인다..그래서 여기다가 적절한값을 채워준다.
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>Auction-mid-imageupmid</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
위와 같은 값을 채워서 저장하고 프로젝트 속성 파일을 열어본다.

사용자 삽입 이미지
아까 처음에 봤던 그림과 다르게 빌드 할 수 있는 환경이 설정되어 있다.
이렇게 해서 빌드 환경을 설정해 주면 이클립스의 다양한 기능을 이용할 수가 있다.
Posted by 즐건세상
l