임베디드 가능한 EJB 컨테이너 구성 특성
임베디드 가능한 EJB(Enterprise JavaBeans) 컨테이너에 대해 다음 구성 특성을 사용합니다.
특성 | 유형 | 기본값 | 설명 |
---|---|---|---|
com.ibm.websphere.ejbcontainer.cacheSize | java.lang.Long | 2 053 | EJB 캐시에 대한 버킷의 수. |
com.ibm.websphere.ejbcontainer.cacheSweepInterval | java.lang.Long | 3 000 | 항목을 제거할지 결정하기 위한 EJB 캐시의 스윕 사이의 시간. |
com.ibm.websphere.ejbcontainer.inactivePoolCleanupInterval | java.lang.Long | 30 000 | 비활성 풀 정리 전에 정리 스레드가 대기하는 시간(밀리초). |
com.ibm.websphere.ejbcontainer.passivationDir | java.lang.String | <TempDir> | 비활성 stateful Beans에 대한 디렉토리입니다. 사용자는 지정된 디렉토리에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다. |
com.ibm.websphere.embeddable.configFileName | java.lang.String | <CurrentWorkingDirectory> /embeddable.properties | 임베디드 가능한 EJB 컨테이너 특성을 포함한 특성 파일의 파일 이름입니다. 파일이 처리되면,
프로그래밍 방식으로 전달된 것처럼 각 특성이 새로 작성된 EJB 컨테이너로 전달됩니다. 구성 파일의 특성은
프로그래밍 방식으로 전달된 특성으로 대체됩니다.
주의: 명령행의 시스템 특성으로 이 특성을 지정할 수도 있습니다.
|
다음 테이블은 데이터 소스에 대해 구성 특성을 포함합니다. 각 특성은 설정이 다른 다중 데이터 소스를 구성할 수 있는 개별 데이터 소스에 따라 다릅니다. <data_source_id>를 구성될 데이터 소스를 식별하는 고유한 항목으로 대체하십시오. 일부 특성은 각 데이터 소스에 대해 필요한 대로 나열됩니다.
특성 | 유형 | 설명 |
---|---|---|
DataSource.<data_source_id>.name | java.lang.String | 필수. 컨테이너가 임베디드 가능한 컨테이너의 글로벌 네임스페이스에서 이 데이터 소스를 바인드하는 데 사용하는 JNDI(Java™ Naming and Directory Interface) 문자열입니다. 이 문자열은 애플리케이션에서 사용된 JNDI 검색과 일치해야 합니다. |
DataSource<data_source_id>.className | java.lang.String | 필수. 데이터 소스 클래스의 Java 클래스 이름입니다. 테스트를 위해, app_server_root/derby/lib/derby.jar이 JVM(Java Virtual Machine) 클래스 경로에 있는 경우 Apache Derby가 사용될 수 있습니다. 지원되는 Apache Derby용 데이터 소스 클래스는 org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource 및 org.apache.derby.jdbc.EmbeddedXADataSource입니다. |
DataSource.<data_source_id>.connectionSharing | java.lang.String | 연결을 공유하기 위한 정책입니다. 올바른 값은 MatchOriginalRequest(기본값), MatchCurrentState 또는 None입니다. MatchOriginalRequest는 기존 연결의 원래 요청된 설정과 일치하는 경우 연결 요청이 공유할 수 있음을 의미합니다. MatchCurrentState는 기존 연결의 현재 설정과 일치하는 경우 연결 요청이 공유할 수 있음을 의미합니다. 없음은 다중 연결 요청이 동일한 연결을 공유하지 않음을 의미합니다. |
DataSource.<data_source_id>.databaseName | java.lang.String | 이 데이터 소스가 연결할 데이터베이스의 이름입니다. |
DataSource.<data_source_id>.isolationLevel | java.lang.Integer | 이 데이터 소스에서의 연결을 위한 트랜잭션 격리 레벨입니다. 지정되지 않은 경우, 기본값은
JDBC 드라이버나 데이터베이스에서 제공됩니다. 유효한 값은 커미트되지 않은 읽기의 경우 1, 커미트된 읽기의 경우 2, 반복 읽기의 경우 4 또는 순차적 실행의 경우 8입니다. 이 값은 java.sql.Connection의 상수에서 오며 변경될 수 있습니다. |
DataSource.<data_source_id>.maxIdleTime | java.lang.Integer | 이 시간(초)이 지나면 연결 풀이 사용되지 않은 연결을 닫을 수 있습니다. |
DataSource.<data_source_id>.maxPoolSize | java.lang.Integer | 이 데이터 소스에 대해 작성된 최대 연결 수입니다. 이 수의 동시 연결이 사용 중이면 하나 이상의 사용 중인 연결이 풀로 리턴될 때까지 이 데이터 소스에서 연결을 가져오는 차후 요청이 차단됩니다. |
DataSource.<data_source_id>.maxStatements | java.lang.Integer | 연결 풀에서 캐시된 명령문의 최대값입니다. 이 값은 maxPoolSize 값으로 나누어 풀의 각 연결에 대해 캐시될 수 있는 명령문의 수를 판별합니다. 0의 값은 명령문 캐싱을 사용 안함으로 설정합니다. |
DataSource.<data_source_id>.minPoolSize | java.lang.Integer | 이 데이터 소스에 대한 연결 풀에서 유지할 최대 연결 수입니다. 사용 중인 연결이 없는 경우, 풀 크기가 이 설정에 도달할 때까지 연결 풀은 연결을 버릴 수 있습니다. 이 설정은 음수가 아니어야 합니다. |
DataSource.<data_source_id>.password | java.lang.String | 데이터베이스 액세스 시 지정된 user의 비밀번호입니다. 이전 특성과 같이, 연결 작성 시 데이터베이스가 보안을 사용하지 않거나 또는 사용자 이름과 비밀번호가 프로그래밍 방식으로 제공된 경우 이 특성을 생략할 수 있습니다. |
DataSource.<data_source_id>.transactional | java.lang.Boolean | 이 데이터 소스가 JTA(Java Transaction API) 트랜잭션에 포함되어야 하는지 여부입니다. 유효한 값은 true(기본값) 또는 false입니다. |
DataSource.<data_source_id>.user | java.lang.String | 데이터베이스 액세스를 위한 사용자 이름입니다. 연결 작성 시 데이터베이스가 보안을 사용하지 않거나 또는 사용자 이름과 비밀번호가 프로그래밍 방식으로 제공된 경우 이 특성을 생략할 수 있습니다. |
DataSource.<data_source_id>.<vendor_property_name _or_connection_pool_property_name> | java.lang.String | 다른 특성을 다음과 같이 구성할 수도 있습니다.
|
DataSource.<data_source_id>.xaRecoveryPassword | java.lang.String | XA 데이터 소스에만 적용됩니다. XA 복구를 위한 비밀번호입니다. |
DataSource.<data_source_id>.xaRecoveryUser | java.lang.String | XA 데이터 소스에만 적용됩니다. 일부 데이터베이스는 XA 복구를 위해 특수 권한이 있는 사용자가 필요합니다. 이 특성을 사용하여 기본 사용자 대신 XA 복구를 위한 사용자 이름을 지정합니다. |
다음 특성을 사용하여 두 데이터 소스를 구성합니다.
DataSource.ds1.name=env/jdbc/ds1
DataSource.ds1.className=org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource
DataSource.ds1.transactional=true
DataSource.ds1.createDatabase=create
DataSource.ds1.databaseName=jtest1
DataSource.ds1.user=dbuser1
DataSource.ds1.password=dbpwd1
DataSource.ds1.maxPoolSize=5
DataSource.ds2.name=env/jdbc/ds2
DataSource.ds2.className=org.apache.derby.jdbc.EmbeddedXADataSource
DataSource.ds2.connectionSharing=MatchOriginalRequest
DataSource.ds2.createDatabase=create
DataSource.ds2.databaseName=jtest2
DataSource.ds2.user=dbuser2
DataSource.ds2.password=dbpwd2
DataSource.ds2.maxPoolSize=10
DataSource.ds2.minPoolSize=1
DataSource.ds3.name=env/jdbc/ds3
DataSource.ds3.className=com.ibm.db2.jcc.DB2XADataSource
DataSource.ds3.driverType=4
DataSource.ds3.databaseName=DB2COPY1
DataSource.ds3.serverName=mydb2.test.ibm.com
DataSource.ds3.portName=50000
DataSource.ds3.user=dbuser1
DataSource.ds3.password=dbpwd1
첫 번째 데이터 소스, ds1은 이름, env/jdbc/ds1의 네임스페이스에서 바인드되며 5개까지의 Apache Derby 데이터베이스에 대한 연결을 위한 연결 풀링을 제공합니다. 두 번째 데이터 소스, ds2는 env/jdbc/ds2의 네임스페이스에서 바인드되며 Apache Derby 데이터베이스에 대한 XA-준수 연결 풀링을 제공합니다.
- <app>을 애플리케이션 이름으로 대체하십시오.
기본적으로 애플리케이션 이름은 비어 있는 문자열입니다. 그러나 createEJBContainer 호출 시 애플리케이션 이름은 EJBContainer.APP_NAME 특성을 사용하여 지정될 수 있습니다.
- <module>을 모듈 이름으로 대체하십시오.
모듈 이름은 ejb-jar.xml에서 <module-name>으로 지정되며, ".jar" 접미부가 없는 JAR 파일의 이름이거나, 또는 모듈을 포함한 디렉토리의 이름입니다.
- <ejb>를 EJB의 이름으로 대체하십시오.
EJB의 이름은 ejb-jar.xml에서 <ejb-name>으로 지정되거나 어노테이션 사용 시 이름 요소(예: @Stateless(name="TestBean"))로 지정됩니다. EJB 어노테이션에서 지정된 이름이 없는 경우, 단순 클래스 이름이 사용됩니다. 예를 들어, 클래스 com.ibm.test.TestBean에 대해 TestBean입니다.
- <interceptor>를 인터셉터 클래스의 이름으로 대체하십시오.
- <ref>를 자원 참조, EJB 참조 또는 환경 항목의
이름으로 대체하십시오.
참조는 ejb-jar.xml에서 예를 들어 <res-ref-name>jdbc/mydsref</res-ref-name> 또는 <ejb-ref-name>java:module/env/myejbref</ejb-ref-name>로 지정될 수 있습니다. 또는, 어노테이션을 사용하여 참조를 지정할 수 있습니다(예: @Resource(name="jdbc/mydsref") 또는 @EJB(name="java:module/env/myenvref")).
임베드 가능 컨테이너를 실행할 때 애플리케이션 이름이 지정되지 않는 경우 <app> 을 생략해야 합니다. 그러나 # 구분 기호를 사용해야 합니다. 예: Bean.#<module>#<bean>.ResourceRef.BindingName.
특성 | 유형 | 설명 |
---|---|---|
Bean.<app>#<module>#<ejb>.ResourceRef.BindingName.<ref> 또는 Interceptor.<app>#<module>#<interceptor>.ResourceRef.BindingName.<ref> | java.lang.String | 자원 참조가 검색되거나 삽입되면 사용할 JNDI 문자열입니다. 구성된 데이터 소스의 JNDI 이름이어야 합니다. |
Bean.<app>#<module>#<ejb>.EJBRef.BindingName.<ref-name> 또는 Interceptor.<app>#<module>#<interceptor>.EJBRef.BindingName.<ref> | java.lang.String | EJB 참조가 검색되거나 삽입되면 사용할 JNDI 문자열입니다. 임베디드 가능한 EJB 컨테이너에서 EJB의 java:global, java:app 또는 java:module JNDI 문자열이어야 합니다. |
Bean.<app>#<module>#<ejb>.EnvEntry.Value.<ref-name> 또는 Interceptor.<app>#<module>#<interceptor>.EnvEntry.Value.<ref> | java.lang.String | 환경 항목이 검색되거나 삽입되면 사용할 값입니다. 이 특성은 env-entry-value로 지정된 값을 대체합니다. 환경 항목의 유형으로 이 값이 유효해야 합니다. |
Bean.<app>#<module>#<ejb>.EnvEntry.BindingName.<ref> 또는 Interceptor.<app>#<module>#<interceptor>.EnvEntry.BindingName.<ref> | java.lang.String | 환경 항목이 검색되거나 삽입되면 사용할 JNDI 문자열입니다. 동일한 임베디드 가능한 EJB 컨테이너에서 다른 환경의 java:global, java:app 또는 java:module JNDI 문자열이어야 합니다. |
Bean.<app>#<module>#<ejb>.DataSource.BindingName.<ref> 또는 Interceptor.<app>#<module>#<interceptor>.DataSource.BindingName.<ref> | java.lang.String | 데이터 소스가 검색되거나 삽입되면 사용할 JNDI 문자열입니다. 구성된 데이터 소스의 JNDI 이름 또는 동일한 임베디드 가능한 EJB 컨테이너에서 다른 데이터 소스의 java:global, java:app 또는 java:module JNDI 문자열이어야 합니다. 애플리케이션 개발자는 데이터 소스를 직접 검색하지 않고 자원 참조를 사용해야 합니다. 데이터 소스를 직접 검색하도록 애플리케이션이 코딩되면 이 특성을 사용하여 애플리케이션에 포함된 데이터 소스를 대체할 수 있습니다. 데이터 소스 정의에 대한 자세한 정보는 Information Center를 참조하십시오. |
다음 특성을 사용하여 두 참조가 있는 EJB 및 환경 항목이 있는 인터셉터에 대한 바인딩을 구성합니다.
Bean.#TestModule#TestBean.ResourceRef.BindingName.jdbc/dsref=env/jdbc/ds1
Bean.#TestModule#TestBean.EJBRef.BindingName.ejb/Cart=java:global/CartModule/CartBean
Interceptor.#TestModule#com.ibm.example.LoggerInterceptor.EnvEntry.Value.logFile=/tmp/output.log

Bean.#TestModule#TestBean.DataSource.BindingName.java\:module/env/TestDataSource=jdbc/MyDataSource
gotcha특성 | 유형 | 기본값 | 설명 |
---|---|---|---|
com.ibm.websphere.securityEnabled | java.lang.String | false | 보안 역할이 확인되는지 여부를 판별합니다. 유효한 값은 false(기본값) 또는 true입니다. true인 경우, 보안 역할이 확인되며 false인 경우 보안 역할이 확인되지 않습니다. |
role.<role_name> | java.lang.String | EJB 역할을 하나 이상의 사용자에게 맵핑합니다. <role_name>은 어노테이션 @RolesAllowed 또는 배치 디스크립터 <method-permission>을 통해 메소드에 지정되는 역할입니다. 값은 쉼표로 구분되는 사용자 이름의 문자열입니다(예: "bob, mary, john"). 목록의 사용자는 <role_name>을 필요로 하는 메소드를 실행할 수 있습니다. | |
role.runAs.<role_name> | java.lang.String | EJB 역할 하나를 사용자 한 명에게 맵핑합니다. <role_name>은 어노테이션 @RunAs 또는 배치 디스크립터 <run-as>를 통해 Bean 또는 메소드에 지정되는 역할입니다. 값은 단일 사용자 이름입니다. 실행 중인 동안 Bean에서 필요한 권한 부여에 사용자 이름이 사용됩니다. | |
user.invocation | java.lang.String | Bean이 호출되면 권한 부여에 사용될 수 있는 사용자를 정의합니다. 값은 단일 사용자 이름입니다. 컨테이너는 이 사용자가 실행된 메소드를 실행할 수 있는 역할에 맵핑되는지 확인합니다. |
다음 테이블은 LTC(Local Transaction Containment) 동작을 위한 구성 특성을 포함합니다. LTC의 설명은 로컬 트랜잭션 제약에 대해 읽으십시오. 각 특성은 Bean에 따라 다릅니다.
임베드 가능 컨테이너를 실행할 때 애플리케이션 이름이 지정되지 않는 경우 <application_name> 을 생략해야 합니다. 그러나 # 구분 기호를 사용해야 합니다. 예: Bean.#<module_name>#<bean_name>LocalTransaction.Resolver.
특성 | 유형 | 기본값 | 설명 |
---|---|---|---|
Bean.<application_name>#<module_name>#<bean_name>.LocalTransaction.Resolver | java.lang.String | 애플리케이션 | 로컬 트랜잭션 해결을 담당하는 엔티티를 판별합니다. 유효한 값은 Application(기본값) 또는 ContainerAtBoundary입니다. |
Bean.<application_name>#<module_name>#<bean_name>.LocalTransaction.UnresolvedAction | java.lang.String | 롤백 | 해결되지 않은 로컬 트랜잭션에 대한 수행 조치를 판별합니다. 유효한 값은 Rollback(기본값) 또는 Commit입니다. |
다음 테이블은 XML 동작에 대한 구성 특성을 포함합니다.
특성 | 유형 | 기본값 | 설명 |
---|---|---|---|
com.ibm.websphere.tx.acceptHeuristicHazard | java.lang.String | false | 마지막 참가자 지원이 모든 모듈에 대해 사용 가능한지를 지정합니다. 기본값은 false입니다. |
com.ibm.websphere.tx.auditRecovery | java.lang.String | true | 복구 처리가 감사 메시지를 출력하는지 여부를 지정하며, 복구 중 XA 자원과 XID 처리를 표시합니다. 지정된 감사 복구가 없는 경우, 오류가 발생하지 않으면 단일 복구 메시지만이 복구된 트랜잭션의 수와 함께 출력됩니다. |
com.ibm.websphere.tx.clientInactivityTimeout | java.lang.String | 0 | 트랜잭션 요청 사이의 최대 기간(초)을 지정합니다. 이 제한시간 값을 초과하는 클라이언트 비활성 기간으로 트랜잭션이 롤백됩니다. 기본 설정, 0은 한계가 존재하지 않음을 의미합니다. |
com.ibm.websphere.tx.enableLoggingForHeuristicReporting | java.lang.String | false | 이 특성을 사용하여 경험적 보고에 대한 로깅을 사용 가능하게 할 수 있습니다. 마지막 참가자 지원이 사용되면, 서버가 사용 불가능하게 될 때 발생할 수 있는 경험적 결과의 보고서에서는 추가 정보를 트랜잭션 로그에 작성해야 합니다. 사용 가능으로 설정된 경우, 1단계 및 2단계 커미트 자원 모두에 관련된 모든 트랜잭션에 대해 추가 로그 쓰기가 수행됩니다. 1단계 커미트 자원에 관련되지 않은 트랜잭션에 대해서는 추가 레코드가 기록되지 않습니다. |
com.ibm.websphere.tx.heuristicRetryLimit | java.lang.String | 0 | 트랜잭션 서비스가 커미트나 롤백과 같은 완료 신호를 재시도하는 횟수를 지정합니다. 자원 관리자로부터의 임시 예외 후 재시도가 발생합니다. 기본값, 0은 재시도 횟수에 대한 제한이 없음을 표시합니다. |
com.ibm.websphere.tx.heuristicRetryWait | java.lang.String | 0 | 자원 관리자로부터의 임시 예외 후, 커미트나 롤백과 같은 완료 신호를 재시도하기 전에 트랜잭션 서비스가 대기하는 시간(초)을 지정합니다. |
com.ibm.websphere.tx.LPSHeuristicCompletion | java.lang.String | ROLLBACK (대소문자를 구분하지 않음) |
1단계 커미트 자원의 결과를 알 수 없는 경우 마지막 참가자 지원이 있는 트랜잭션의 트랜잭션 서비스에서 사용될 경험적 완료 조치입니다. 값 ROLLBACK 또는 COMMIT는 이에 따라 2단계 커미트 자원을 완료합니다. 설정, MANUAL은 트랜잭션 서비스가 조치를 취하지 않고 2단계 커미트 자원을 인다우트(in-doubt) 상태로 두는 것을 의미합니다. 기본값은 ROLLBACK입니다. |
com.ibm.websphere.tx.maximumTransactionTimeout | java.lang.String | 300 | 트랜잭션 제한시간 값의 상한(초)을 지정합니다. 이 제한시간 값은 기타 모든 트랜잭션 제한시간 값의 상한을 제한합니다. |
com.ibm.websphere.tx.totalTranLifetimeTimeout | java.lang.String | 120 | 트랜잭션 서비스가 제한시간을 시작하기 전에 트랜잭션에 허용된 기본 최대 시간(초)을 지정합니다. 이 제한시간 초과가 발생하기 전에 완료 처리를 시작하지 않은 트랜잭션은 롤백됩니다. |
com.ibm.websphere.tx.tranLogDirectory | java.lang.String | profiles\server name\tranlog | 트랜잭션 서비스가 복구를 위해 로그 파일을 저장하는 이 서버에 대한 디렉토리 이름을 지정합니다. |
com.ibm.websphere.tx.tranLogSize | java.lang.String | 1024 | 트랜잭션 로그 파일의 크기(KB)를 지정합니다. 최소 파일 크기는 64KB입니다. 기본값은 파일 크기를 1MB로 설정합니다. |