wsenhancer 命令
Java™ Persistence API (JPA) 应用程序的实体增强器工具将字节码插入到实体类文件中,该文件支持由 JPA 提供程序管理实体状态。使用此命令行工具可在 Java™ 持久性 API (JPA) 2.0 规范提供程序 WSJPA/OpenJPA 下增强 WebSphere® Application Server 的实体。
如果要管理所有实体类的状态,那么与应用程序服务器一起使用的 JPA 要求对这些实体类进行增强。在容器管理的环境中,由容器提供自动增强。在 Java SE 环境中虽然没有管理持久性的容器,但是您仍可经常在打包测试的应用程序文件前使用此命令。创建 JPA 实体后,您可以运行 wsenhancer 工具将字节码注入实体,然后再将 Java 归档 (JAR) 文件打包到应用程序的企业归档 (EAR) 文件中。
语法
命令语法如下所示:
![[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>:指定增强器是否应该用临时类装入器来装入持久类。
此功能支持其他代码将以后的增强版本类装入到同一 Java 虚拟机 (JVM) 中。缺省值设置为 true。
避免故障: 如果您在运行增强器时遇到类装入问题,那么可以在调试过程中将此标志设置为 false。gotcha
- 对于类名,请指定下列其中一项:
- 类的完整名称。
- 类的 .java 名称。
- 类的 .class 文件。
用法
要使用 wsenhancer 工具,您需要根据 JPA 规范定义实体,并且必须编译这些实体。对这些实体运行 wsenhancer 工具,然后再将其封装到 JAR 文件中。如果实体已打包,请抽取实体类文件,运行增强器,然后重新创建 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 文档中有关持久类的章节。