1. 클래스를 가져 온다.
Class cl = (Class) <클래스명>.class.getClassLoader().loadClass(className);

2. 생성자를 가져온다.
Costructor con = cl.getConstructor();

3. 메소드 명을 가져 온다.
mMethod= cl.getMethod(methodName, parameter 의 자료형.......);

4. 생성자로 해당 클래스의 인스턴스를 생성한다.
Object obj = con.newInstance();

5. 해당 클래스안에 있는 메소드를 실행시킨다.
mMethod.invoke(인스턴스, parameter들....);

메소드 실행 부분에 대해서는 여러가지 경우가 있는데, 기본적으로 메소드 자체가 static인 경우 인스턴스가 필요가 없다. 하지만, 메소드가 static이 아닌 경우는 인스턴스를 생성해서 실행시켜주어야 한다.
Posted by styner
JDK 6, JBOSS 4.2.2 환경에서 WebService를 구현하는데 적지 않은 문제가 있다.

이는 JDK 6버전에서는 5버전과 다르게, WebService 관련한 라이브러리들이 추가되어 있는데,

JBOSS 4.2 버전에도 마찬가지로 WebService 관련 라이브러리 들이 들어 있다.

JBOSS 4.2버전이 JDK 5 버전을 기준으로 구현이 되서 문제가 생기는 지는 모르겠지만,

SoapMessage.class 클래스에 문제가 생긴다.

계속해서 이상하게 SoapMessage 클래스에 setProperties라는 메소드를 상속하라는 에러가

뜨는데, 이유를 알고 보니, JBOSS의 jboss-saaj.jar과 JDK 6의 saaj.jar이 충돌해서 생기는

문제 였다.

이를 해결하기 위해서는 JBOSS의 jboss-saaj.jar가 사용되게 바꾸어야 한다.

다시 말하면 구현된 Webservice가 JDK 6의 saaj.jar를 먼저 참조하여 사용하기 전에, JBOSS의

 jboss-saaj.jar를 사용할 수 있도록 바꾸어야 하는데, 문제가 생기기전에 해결을 한다면,

5 버전을 쓰면 될 문제지만, 문제가 생긴 이후라면, 소스를 5버전으로 다시 컴파일 해야 한다.
Posted by styner

JCrontab 사용기

분류없음 2008/03/07 10:20
실행환경 : JBoss 4.2.2

JContab 파일 이름 : Jcrontab-2.0-RC0.jar

License : LGPL

1. 라이브러리 파일 위치
1) <$JBOSS_HOME>\lib 에 위 파일을 넣는다.
 : 그래야 JCrontab Instance가 제대로 생성 된다. JCrontab은 Singleton Pattern으로 생성이 되기 때문에, 기본적으로 인스턴스를 생성하기 위해서는 getInstance라는 static 메소드를 사용한다. 만약 라이브러리 링크를 사용하면, static 영역 부분을 접근 할 수 없기 때문에, 위와 같이 처리 한다.

2)  그리고 Web Project의 라이브러리 폴더 ( <Project>\WebContent\WEB-INF\lib 안에도 넣어야 한다.

위의 문제를 몰랐기 때문에 NoClassDefFoundError를 너무 많이 봤다.


2. 설정 파일
1) jcrontab.properties : 설정 파일들의 위치, datasource 클래스, 갱신 주기, mail 등의 JCrontab에 대한 기본 설정이 들어있다.

2) log4j.properties : JContab 안에서 사용될 Log 클래스에 대한 설정이다.
윈도우 환경에서는 제대로 수행되지 않아서 모두 주석 처리를 해버렸다.

3) crontab : 실제 실행될 클래스와 메소드들과 실행 시간에 대한 기록을 한다.


Posted by styner