wsenhancer 명령
JPA(Java™ Persistence API) 애플리케이션에 대한 엔티티 인핸서 도구는 JPA 제공자가 엔티티의 상태를 관리하도록 지원하는 바이트코드를 엔티티 클래스 파일에 삽입합니다. 이 명령행 도구를 사용하여 WebSphere® Application Server에 대해 JPA(Java™ Persistence API ) 2.0 스펙 제공자인 WSJPA/OpenJPA의 엔티티를 개선하십시오.
모든 엔티티 클래스의 상태를 관리하려면 애플리케이션 서버의 JPA에서 해당 엔티티 클래스가 확장되어야 합니다. 컨테이너 관리 환경에서는 컨테이너가 자동 확장을 제공합니다. 그러나 Java SE 환경에서는 지속성을 관리할 컨테이너가 없으며 애플리케이션 파일을 패키지화하기 전에 이 명령을 자주 사용하여 테스트할 수 있습니다. JPA 엔티티를 작성한 후 JAR(Java archive) 파일을 애플리케이션에 대한 엔터프라이즈 아카이브(EAR)로 패키징하기 전에 wsenhancer 도구를 실행하여 엔티티에 바이트 코드를 삽입할 수 있습니다.
구문
명령 구문은 다음과 같습니다.
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
wsenhancer.sh [parameters][arguments]
![[IBM i]](../images/iseries.gif)
wsenhancer [parameters][arguments]
![[Windows]](../images/windows.gif)
wsenhancer.bat [parameters][arguments]
매개변수
- -directory/-d <output directory>:
출력 디렉토리에 대한 경로를 지정합니다.
디렉토리가 확장 클래스 패키지와 일치하지 않는 경우 디렉토리 바로 아래에 패키지 구조가 작성됩니다. 기본적으로, 인핸서가 원래 .class 파일을 겹쳐씁니다.
- -enforcePropertyRestrictions/-epr <true/t
| false/f>: 특성 액세스 엔티티가 특성 액세스에
부과되는 제한을 준수하지 않고 있을 때 예외를 생성할지
여부를 지정합니다.
기본값은 false로 설정됩니다.
- -addDefaultConstructor/-adc <true/t | false/f>: 모든 지속적 클래스가 인수가 없는 생성자를 정의하도록 지정합니다. 이 플래그는 인핸서에게 생성자가 아직 없는 지속적 클래스에 보호된 인수가 없는 생성자를 추가하도록 알려줍니다.
- -tmpClassLoader/-tcl <true/t |
false/f>: 인핸서가 임시 클래스 로더를 사용하여 지속적 클래스를
로드해야 하는지 여부를 지정합니다.
이 기능은 동일한 JVM(Java virtual machine) 내에서 그 이후 클래스의 향상된 버전을 로드하는 다른 코드를 지원합니다. 기본값은 true로 설정됩니다.
문제점 방지: 인핸서를 실행할 때 클래스 로딩 문제점이 발생하는 경우 디버깅 단계로서 이 플래그를 false로 설정할 수 있습니다. gotcha
- 클래스 이름에 대해 다음 중 하나를 지정하십시오.
- 클래스의 전체 이름
- 클래스의 .java 이름
- 클래스의 .class 파일.
사용법
wsenhancer 도구를 사용하려면 JPA 스펙에 정의된 엔티티가 필요하며 엔티티가 컴파일되어야 합니다. 엔티티를 JAR 파일에 패키지화하기 전에 해당 엔티티에 wsenhancer 도구를 실행하십시오. 엔티티가 이미 패키지화된 경우 엔티티 클래스 파일을 추출하고 인핸서를 실행한 다음 JAR 파일을 다시 작성합니다.
- 엔티티가 클래스 경로에 있는지 확인하고 엔티티가 없는 경우 추가하십시오.
- wsenhancer 명령을 실행하십시오. profile_root/bin 디렉토리에 있습니다.
예제
클래스 경로의 모든 엔티티를 향상시키려면 다음을 수행하십시오.
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh
![[IBM i]](../images/iseries.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer
![[Windows]](../images/windows.gif)
C:\myproject\cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat
myproject의 모든 엔티티가 향상됩니다.
소스 파일이 있을 때 특정 엔티티를 향상시키려면 다음을 수행하십시오.
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer.sh Magazine.java
![[IBM i]](../images/iseries.gif)
$ cd build
/home/user/myproject/build $ ${profile_root}/bin/wsenhancer Magazine.java
![[Windows]](../images/windows.gif)
C:\myproject\cd build
C:\myproject\build>%profile_root%\bin\wsenhancer.bat Magazine.java
컴파일된 클래스 파일이 있을 때 특정 엔티티를 향상시키려면 다음을 수행하십시오.
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer.sh /bin/wsenhancer.sh target/classes/jpa/example/MyEntity.class
![[IBM i]](../images/iseries.gif)
$ export CLASSPATH=target/classes
$ ${profile_root}/bin/wsenhancer target/classes/jpa/example/MyEntity.class
![[Windows]](../images/windows.gif)
C:> cd build
C:\build> SET CLASSPATH=target\classes
C:\build>%profile_root%\bin\wsenhancer.bat \bin\wsenhancer.bat target\classes\jpa\example\Magazine.class
프로젝트에 위치한 Magazine.java 엔티티가 향상됩니다.
추가 정보
개선 도구에 대한 자세한 정보는 Apache OpenJPA 문서에서 지속적 클래스에 대한 섹션을 참조하십시오.