1. EJB 시스템 프로퍼티

본 절에서는 EJB 시스템 프로퍼티에 대해 설명한다.

1.1. EJB 시스템 프로퍼티

다음은 EJB 시스템 프로퍼티에 대한 설명이다.

  • jeus.ejb.transaction.attribute.default

    설명

    Container-managed Transaction Bean의 메소드에 Transaction 속성이 설정되어 있지 않는 경우 사용할 속성을 설정한다.

    다음 중에 하나를 설정한다.

    • NotSupported

    • Supports

    • Required

    • RequiresNew

    • Mandatory

    • Nerver

    속성의 우선순위는 다음과 같다.

    1. ejb-jar/trans-attribute

    2. jeus-ejb-dd/unspecified-container-transaction

    3. 시스템 프로퍼티

    기본값

    • EJB 3.0 Bean 이상의 경우 : Required(스펙 기준)

    • EJB 3.0 미만의 Bean의 경우 : Supports(하위 호환성을 위함)

    • Timer Service 메소드의 경우 : NotSupported

  • jeus.ejb.sharedcolumn.modify

    설명

    CMP Entity Bean에서 column sharing되어 있는 cmp, cmr 필드를 하나의 트랜잭션에서 모두 수정하는 것을 허용할지 여부를 결정한다.

    기본값

    false

  • jeus.ejb.checkTable

    설명

    CMP Entity Bean을 deploy할 때 데이터베이스의 테이블이 존재하는지 컬럼이 제대로 존재하는지를 확인할지 여부를 설정한다.

    기본값

    false

  • jeus.ejb.enable.configDeleteOption

    설명

    CMP Entity Bean을 undeploy할 때 데이터베이스 테이블을 삭제하는 것을 허용할지 여부를 설정한다.

    • true : <deleting-table>의 설정이 적용된다.

    • false : <deleting-table>의 설정이 무시된다.

    기본값

    false

  • jeus.ejb.csi.trusthosts

    설명

    CORBA CSIv2를 사용할 때의 Trust 호스트이다.

  • jeus.client.interop

    설명

    클라이언트 JVM에서 CORBA interoperability를 사용할지 여부를 설정한다.

    기본값

    false

  • jeus.corba.WorkerThreadInactivityTO

    설명

    corba WorkerThread의 inactive timeout을 지정한다.

    기본값

    120000 ms

  • jeus.corba.minWorkerThreads

    설명

    corba WorkerThreadPool에서의 최소 유지 스레드 개수를 설정한다.

    기본값

    10

  • jeus.corba.maxWorkerThreads

    설명

    corba WorkerThreadPool에서의 최대 생성 가능 스레드 개수를 설정한다.

    기본값

    1000

  • jeus.corba.iiop.tcpConnectTO

    설명

    corba iiop 통신시 생성된 커넥션의 connect timeout을 설정한다. Cumulative Waiting 방식으로 동작하고 콜론(:)으로 구분된 4개의 int(단위 ms) 값으로 설정하며 각각은 (연결 실패 이후 재시도까지)최초 대기 시간, 최대 누적 대기 시간, 대기 시간 증가율, 최대 단일 대기 시간을 의미한다.

    기본값

    1000:5000:20:2500

  • jeus.corba.iiop.tcpReadTO

    설명

    corba iiop 통신시 생성된 커넥션의 read timeout을 설정한다. Cumulative Waiting 방식으로 동작하고 콜론(:)으로 구분된 4개의 int(단위 ms) 값으로 설정하며 각각은 (연결 실패 이후 재시도까지)최초 대기 시간,최대 누적 대기 시간, 대기 시간 증가율, 최대 단일 대기 시간을 의미한다.

    기본값

    1000:5000:20:2500

  • jeus.corba.useMetaOperation

    설명

    CORBA/IIOP 스펙에 존재하는 meta operation 수행 여부를 설정한다. meta opertaion은 클라이언트와 서버간 EJB 메소드 파라미터 클래스의 필드가 서로 다른 경우 이를 해소하기 위해 수행된다.

    기본값

    true

  • jeus.corba.clientORBPort

    설명

    스탠드어론 클라이언트에서 사용할 ORB Port를 설정한다. 클라이언트와 서버간 EJB 메소드 파라미터 클래스의 필드 차이로 인한 meta opertaion이 수행될때, 서버에서 해당 클라이언트 포트로 요청한다. 기본값 0으로 설정된 경우 random port를 사용한다.

    기본값

    0

  • jeus.ejb.csi.defaultUser

    설명

    CORBA CSIv2를 사용할 때 기본 사용자를 설정한다.

  • jeus.ejb.notreload

    설명

    shared 클래스 로더를 사용하는 EJB가 deploy, undeploy, redeploy될 때 reload에서 제외될 웹 모듈 리스트이다.

    다음 형식으로 설정한다.

    context_name1;context_name2
  • jeus.corba.props

    설명

    EJB에서 사용하는 ORB의 프로퍼티이다.

    key=value[,key=value]*
  • jeus.ejb.cluster.useip

    설명

    EJB에서 Active Stub을 사용하는 경우 서버로 접속하기 위한 주소를 IP 주소로 할지 호스트명으로 할지 여부를 설정한다. 여기에서 사용하는 IP는 jeus.net.localip로 지정된 IP를 사용한다.

    이 옵션이 true가 되면 classftp의 주소도 IP 주소를 사용하게 된다.

    기본값

    false

  • jeus.ejb.all.disconnect

    설명

    모든 Bean 타입에 적용될 disconnect timeout을 설정한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

    [Deprecated] EJB 3.1 스펙에서는 @StatefulTimeout 또는 ejb-jar.xml의 <stateful-timetout>으로 설정 가능하다.

    기본값

    3600000 (단위: ms)

  • jeus.ejb.entity.disconnect

    설명

    Entity Bean에 적용될 disconnect timeout을 설정한다. (단위 : ms)

    jeus.ejb.all.disconnect 설정에 우선한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

  • jeus.ejb.stateful.disconnect

    설명

    Stateful Session Bean에 적용될 disconnect timeout을 설정한다. (단위: ms)

    jeus.ejb.all.disconnect 설정에 우선한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

    [Deprecated] EJB 3.1 스펙에서는 @StatefulTimeout 또는 ejb-jar.xml의 <stateful-timetout>으로 설정 가능하다.

  • jeus.ejb.all.passivate

    설명

    모든 Bean type에 적용될 passivation timeout을 설정한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

    기본값

    300000 (단위: ms)

  • jeus.ejb.entity.passivate

    설명

    Entity Bean에 적용될 passivation timeout을 설정한다. (단위 : ms)

    jeus.ejb.all.passivate 설정에 우선한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

  • jeus.ejb.stateful.passivate

    설명

    Stateful Session Bean에 적용될 passivation timeout을 설정한다. (단위: ms)

    jeus.ejb.all.passivate 설정에 우선한다.

    -1로 설정하면 disconnect 기능을 사용하지 않는다.

  • jeus.ejb.exportPort

    설명

    EJB에서 사용할 default export port를 설정한다.

    jeus-ejb-dd.xml의 export port가 0인 EJB는 이 값을 사용한다.

    0이면 RMI가 제공하는 기본 포트를 사용한다.

    기본값

    Managed Server base port + 7

  • jeus.ejb.entity.lock-wait-timeout

    설명

    같은 entity를 사용할 때 lock을 기다리는 timeout 값이다.

    SINGLE 또는 EXCLUSIVE일 경우에만 적용된다. (단위: ms)

    기본값

    0 (무한 대기)

  • jeus.ejb.timer.generate-table-ddl

    설명

    EJB Timer Handle을 저장할 테이블을 생성하기 위한 DDL을 파일로 생성한다.

    내부적인 용도로만 사용해야 한다. JEUS를 실행한 디렉터리에 createDDL.jdbc라는 이름으로 생성된다.

    기본값

    false

  • jeus.ejb.generate-no-interface-view-files

    설명

    no-interface-view인 EJB의 Local business interface의 클래스 파일을 작성한다.

    '_generated_' 폴더 하위에 class 파일이 생성된다.

    기본값

    false

  • jeus.ejb.cluster.selection-policy

    설명

    클러스터링된 EJB 엔진에 속한 EJB를 호출할 경우 어떤 EJB 엔진의 Bean을 선택할 것인지에 대한 정책을 설정한다(EJB 3 Stateless Bean 한정. 자세한 내용은 JEUS EJB 안내서의 EJB 클러스터링 참고).

    다음 중 하나를 선택할 수 있다.

    • locallinkPreference : 로컬 MS에 있는 객체를 사용하도록 한다.

    • roundrobin : 처음 요청에서는 랜덤하게 선택한 MS의 객체를 사용하고, 그 후 요청부터는 하나씩 증가하면서 서버를 선택한다.

    • random : 클러스터링된 MS들 중에서 랜덤하게 하나를 선택하여 사용한다.

    기본값

    locallinkPreference

  • jeus.ejb.iiop.usm

    설명

    IIOP EJB 사용 시 JEUS가 제공하는 Servant Manager를 적용할지 여부를 지정한다.

    Servant Manager를 적용할 경우 IIOP 요청 처리 전 후에 개입하여 TCCL을 상황에 맞게 변경하는 작업을 수행한다.

    애플리케이션에 클래스가 제대로 패키징이 되어 있는 상황에서 IIOP 요청 시 매개변수를 deserialize하는 과정에서 클래스를 못 찾는 현상이 발생하는 경우 이 옵션을 통한 해결을 시도해 볼 수 있다.

    옵션 적용 시 JEUS가 생성하는 IIOP Stub 코드가 달라지므로, 이 옵션을 적용한 서버에 배포할 EJB를 precompile하는 경우 appcompiler에도 이 옵션을 적용해야 한다.

    기본값

    false

1.2. JPA 시스템 프로퍼티

다음은 JPA 시스템 프로퍼티에 대한 설명이다.

  • jeus.persistence.defaultProvider

    설명

    기본 Java Persistence API Provider 클래스이름이다.

1.3. RMI 시스템 프로퍼티

다음은 RMI 시스템 프로퍼티에 대한 설명이다.

프로퍼티의 설명에서 [client]는 RMI 호출하고, [server]는 EJB가 deploy되어 있는 쪽에 설정해야 한다는 의미이다. RMI에 관련된 설정 및 좀 더 다양한 옵션에 대한 내용은 다음을 참고한다.

  • java.rmi.server.codebase

    설명

    [server] RMI를 사용할 때 EJB Bean 클래스 이외에 다른 클래스를 전달해야 할 필요가 있을 경우 class annotation에 넣어주는 codebase이다.

  • java.rmi.server.useLocalHostName

    설명

    [server] 클라이언트가 서버로 접속할 때 서버의 IP를 사용하지 않고 호스트명을 사용할 때 사용한다.

    기본값

    false

  • java.rmi.server.hostname

    설명

    [server] 클라이언트가 서버로 접속할 때 사용하는 호스트명이다.

    java.rmi.server.useLocalHostName보다 우선순위가 낮다.

    기본값

    ip

  • jeus.ejb.rmi.socketfactory

    설명

    [client/server] JEUS가 사용하는 RMISocketFactory 클래스의 fully qualified name을 지정한다. 지정된 클래스는 EJB뿐만 아니라 모든 RMI 통신에 사용된다.

    클라이언트도 같은 RMISocketFactory를 사용해야 통신이 가능하다. 이 클래스는 no argument의 생성자(constructor)를 반드시 제공해야 하며 JEUS_HOME/lib/application에 위치할 수 있다.

    기본값

    jeus.ejb.util.EJBRMISocketFactory

  • jeus.ejb.operationTimeout

    설명

    [client] 리모트 호출을 하고 나서 결과를 기다리는 최대 시간이다(SoTimeout).

    sun.rmi.transport.tcp.responseTimeout 값을 JEUS에서 overwirte한다.

    기본값

    5 * 60 * 1000

  • sun.rmi.transport.connectionTimeout

    설명

    [client] 클라이언트 쪽 RMI Connection이 Idle 상태로 남아 있는 최대 시간을 설정한다(KeepAliveTimeout).

    기본값

    15 * 1000

  • sun.rmi.transport.tcp.readTimeout

    설명

    [server] 서버에서 클라이언트의 요청을 읽어들이는 데 걸릴 수 있는 최대 시간을 설정한다(SoTimeout).

    클라이언트의 SoTimeout인 jeus.ejb.operationTimeout(sun.rmi.transport.tcp.responseTimeout)보다 큰 값을 지정해야 한다.

    기본값

    2 * 60 * 60 * 1000

  • sun.rmi.transport.tcp.maxConnectionThreads

    설명

    [server] 서버에서 요청을 처리하는 Thread 개수의 최댓값을 설정한다.

    관련 있는 JEUS 설정으로는 jeus-ejb-dd.xml에 각 Bean별로 설정하는 <thread-max> 값이 있다. <thread-max>는 각 Bean에 최대로 할당될 수 있는 Thread의 최댓값으로 maxConnectionThreads의 값을 아무리 크게 잡아도 <thread-max>가 작으면 Thread 수가 증가하지 않는다.

    예를 들어 EJB A와 EJB B 두 Bean이 존재하고 <thread-max>를 따로 설정하지 않고 기본값인 100을 사용하면 maxConnectionThreads가 Integer.MAX_VALUE이더라도 200까지 밖에 증가하지 않게 된다.

    기본값

    Integer.MAX_VALUE

  • sun.rmi.transport.tcp.threadKeepAliveTime

    설명

    [server] Thread가 요청이 끝난 후(Idle 상태로) 다른 요청을 기다리는 최대 시간을 설정한다(KeepAliveTimeout).

    기본값

    1*60*1000

  • jeus.ejb.compiler.rmic.fork

    설명

    [server] IIOP 클래스들을 생성할 때 RMIC 컴파일러 프로세스를 fork할지 여부를 설정한다.

    기본값

    false

  • jeus.ejb.compiler.rmic.verbose

    설명

    [server] IIOP 클래스들을 생성할 때 verbose 로그를 남길지 여부를 설정한다.

    기본값

    false

  • jeus.ejb.compiler.rmic.vcompat

    설명

    IIOP을 컴파일할 때 RMI 1.1, 1.2 compatible protocol로 generate할지 여부를 결정한다.

    기본값

    false

  • jeus.ejb.compiler.rmic.enable

    설명

    IIOP Stub 파일을 만들지 말지를 결정한다. 일반적인 경우에는 IIOP Stub 파일이 필요 없다.

    기본값

    false

  • jeus.ejb.compiler.class.version

    설명

    [server] EJB 생성된 클래스를 컴파일할 때 source와 target version을 설정한다.

    기본값

    1.4

  • jeus.ejb.compiler.use-java-compiler-api

    설명

    JDK 6부터 제공하는 Java Compiler API를 사용하도록 하는 옵션이다.

    기본적으로 사용하도록 되어 있지만 기존처럼 JDK의 lib/tools.jar 내에 포함된 SUN 내부 클래스를 직접 이용해서 컴파일하는 방식을 원할 때는 이 옵션을 false로 설정한다.

    컴파일된 클래스 차이에 의해 호환성 문제 등이 발생했을 때 사용할 수 있다.

    기본값

    true