org.apache.tools.ant.taskdefs.optional.ejb

## Class WeblogicDeploymentTool

- java.lang.Object
- - org.apache.tools.ant.taskdefs.optional.ejb.GenericDeploymentTool
  - - org.apache.tools.ant.taskdefs.optional.ejb.WeblogicDeploymentTool

- All Implemented Interfaces:
    EJBDeploymentTool
  Direct Known Subclasses:
    WeblogicTOPLinkDeploymentTool

      public class WeblogicDeploymentTool
      extends GenericDeploymentTool

  The weblogic element is used to control the weblogic.ejbc compiler for generating weblogic EJB jars. Prior to Ant 1.3, the method of locating CMP descriptors was to use the ejbjar naming convention. So if your ejb-jar was called, Customer-ejb-jar.xml, your weblogic descriptor was called Customer- weblogic-ejb-jar.xml and your CMP descriptor had to be Customer-weblogic-cmp- rdbms-jar.xml. In addition, the <type-storage> element in the weblogic descriptor had to be set to the standard name META-INF/weblogic-cmp-rdbms- jar.xml, as that is where the CMP descriptor was mapped to in the generated jar.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `COMPILER_EJB11`
    `protected static java.lang.String` | `COMPILER_EJB20`
    `protected static java.lang.String` | `DEFAULT_COMPILER`
    `protected static java.lang.String` | `DEFAULT_WL51_DTD_LOCATION`
    `protected static java.lang.String` | `DEFAULT_WL51_EJB11_DTD_LOCATION` Weblogic 5.1 dtd location
    `protected static java.lang.String` | `DEFAULT_WL60_51_DTD_LOCATION`
    `protected static java.lang.String` | `DEFAULT_WL60_DTD_LOCATION`
    `protected static java.lang.String` | `DEFAULT_WL60_EJB11_DTD_LOCATION` Weblogic 6.0 ejb 1.1 dtd location
    `protected static java.lang.String` | `DEFAULT_WL60_EJB20_DTD_LOCATION` Weblogic 6.0 ejb 2.0 dtd location
    `protected static java.lang.String` | `DEFAULT_WL70_DTD_LOCATION`
    `static java.lang.String` | `PUBLICID_EJB11` EJB11 id
    `static java.lang.String` | `PUBLICID_EJB20` EJB20 id
    `static java.lang.String` | `PUBLICID_WEBLOGIC_EJB510` Weblogic 5.1.0 id
    `static java.lang.String` | `PUBLICID_WEBLOGIC_EJB600` Weblogic 6.0.0 id
    `static java.lang.String` | `PUBLICID_WEBLOGIC_EJB700` Weblogic 7.0.0 id
    `protected static java.lang.String` | `WL_CMP_DD`
    `protected static java.lang.String` | `WL_DD`

    - ### Fields inherited from class org.apache.tools.ant.taskdefs.optional.ejb.GenericDeploymentTool

      `ANALYZER_CLASS_FULL, ANALYZER_CLASS_SUPER, ANALYZER_FULL, ANALYZER_NONE, ANALYZER_SUPER, DEFAULT_ANALYZER, DEFAULT_BUFFER_SIZE, EJB_DD, JAR_COMPRESS_LEVEL, MANIFEST, META_DIR`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WeblogicDeploymentTool()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSysproperty(Environment.Variable sysp)` Add a nested sysproperty element.
    `protected void` | `addVendorFiles(java.util.Hashtable<java.lang.String,java.io.File> ejbFiles, java.lang.String ddPrefix)` Add any vendor specific files which should be included in the EJB Jar.
    `Path` | `createWLClasspath()` Get the classpath to the weblogic classpaths.
    `protected java.lang.ClassLoader` | `getClassLoaderFromJar(java.io.File classjar)` Helper method invoked by isRebuildRequired to get a ClassLoader for a Jar File passed to it.
    `java.lang.String` | `getEjbcClass()` Get the ejbc compiler class.
    `java.lang.Integer` | `getJvmDebugLevel()` Get the debug level.
    `protected DescriptorHandler` | `getWeblogicDescriptorHandler(java.io.File srcDir)` Get the weblogic descriptor handler.
    `protected boolean` | `isRebuildRequired(java.io.File genericJarFile, java.io.File weblogicJarFile)` Helper method to check to see if a weblogic EBJ1.1 jar needs to be rebuilt using ejbc.
    `protected void` | `registerKnownDTDs(DescriptorHandler handler)` Register the DTDs.
    `void` | `setArgs(java.lang.String args)` Any optional extra arguments pass to the weblogic.ejbc tool.
    `void` | `setCompiler(java.lang.String compiler)` The compiler (switch `-compiler`) to use; optional.
    `void` | `setEjbcClass(java.lang.String ejbcClass)` Set the classname of the ejbc compiler; optional Normally ejbjar determines the appropriate class based on the DTD used for the EJB.
    `void` | `setEJBdtd(java.lang.String inString)` Deprecated.
    `void` | `setJvmargs(java.lang.String args)` Set any additional arguments to pass to the weblogic JVM; optional.
    `void` | `setJvmDebugLevel(java.lang.Integer jvmDebugLevel)` Sets the weblogic.StdoutSeverityLevel to use when running the JVM that executes ejbc; optional.
    `void` | `setKeepgenerated(java.lang.String inValue)` Controls whether weblogic will keep the generated Java files used to build the class files added to the jar.
    `void` | `setKeepgeneric(boolean inValue)` controls whether the generic file used as input to ejbc is retained; defaults to false
    `void` | `setNewCMP(boolean newCMP)` If this is set to true, the new method for locating CMP descriptors will be used; optional, default false.
    `void` | `setNoEJBC(boolean noEJBC)` Do not EJBC the jar after it has been put together; optional, default false
    `void` | `setOldCMP(boolean oldCMP)` Set the value of the oldCMP scheme.
    `void` | `setOutputDir(java.io.File outputDir)` If set ejbc will use this directory as the output destination rather than a jar file.
    `void` | `setRebuild(boolean rebuild)` Set the rebuild flag to false to only update changes in the jar rather than rerunning ejbc; optional, default true.
    `void` | `setSuffix(java.lang.String inString)` Setter used to store the suffix for the generated weblogic jar file.
    `void` | `setWeblogicdtd(java.lang.String inString)` Deprecated.
    `void` | `setWLClasspath(Path wlClasspath)` Optional classpath to WL6.0.
    `void` | `setWLdtd(java.lang.String inString)` Deprecated.
    `void` | `validateConfigured()` Called to validate that the tool parameters have been configured.
    `protected void` | `writeJar(java.lang.String baseName, java.io.File jarFile, java.util.Hashtable<java.lang.String,java.io.File> files, java.lang.String publicId)` Method used to encapsulate the writing of the JAR file.

    - ### Methods inherited from class org.apache.tools.ant.taskdefs.optional.ejb.GenericDeploymentTool

      `addFileToJar, addSupportClasses, checkAndAddDependants, checkConfiguration, configure, createClasspath, getClassLoaderForBuild, getCombinedClasspath, getConfig, getDescriptorHandler, getDestDir, getJarBaseName, getLocation, getManifestFile, getPublicId, getTask, getVendorDDPrefix, log, needToRebuild, parseEjbFiles, processDescriptor, setClasspath, setDestdir, setGenericJarSuffix, setTask, usingBaseJarName`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### PUBLICID_EJB11

          public static final java.lang.String PUBLICID_EJB11

      EJB11 id
      See Also:
        Constant Field Values

    - #### PUBLICID_EJB20

          public static final java.lang.String PUBLICID_EJB20

      EJB20 id
      See Also:
        Constant Field Values

    - #### PUBLICID_WEBLOGIC_EJB510

          public static final java.lang.String PUBLICID_WEBLOGIC_EJB510

      Weblogic 5.1.0 id
      See Also:
        Constant Field Values

    - #### PUBLICID_WEBLOGIC_EJB600

          public static final java.lang.String PUBLICID_WEBLOGIC_EJB600

      Weblogic 6.0.0 id
      See Also:
        Constant Field Values

    - #### PUBLICID_WEBLOGIC_EJB700

          public static final java.lang.String PUBLICID_WEBLOGIC_EJB700

      Weblogic 7.0.0 id
      See Also:
        Constant Field Values

    - #### DEFAULT_WL51_EJB11_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL51_EJB11_DTD_LOCATION

      Weblogic 5.1 dtd location
      See Also:
        Constant Field Values

    - #### DEFAULT_WL60_EJB11_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL60_EJB11_DTD_LOCATION

      Weblogic 6.0 ejb 1.1 dtd location
      See Also:
        Constant Field Values

    - #### DEFAULT_WL60_EJB20_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL60_EJB20_DTD_LOCATION

      Weblogic 6.0 ejb 2.0 dtd location
      See Also:
        Constant Field Values

    - #### DEFAULT_WL51_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL51_DTD_LOCATION

      See Also:
        Constant Field Values

    - #### DEFAULT_WL60_51_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL60_51_DTD_LOCATION

      See Also:
        Constant Field Values

    - #### DEFAULT_WL60_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL60_DTD_LOCATION

      See Also:
        Constant Field Values

    - #### DEFAULT_WL70_DTD_LOCATION

          protected static final java.lang.String DEFAULT_WL70_DTD_LOCATION

      See Also:
        Constant Field Values

    - #### DEFAULT_COMPILER

          protected static final java.lang.String DEFAULT_COMPILER

      See Also:
        Constant Field Values

    - #### WL_DD

          protected static final java.lang.String WL_DD

      See Also:
        Constant Field Values

    - #### WL_CMP_DD

          protected static final java.lang.String WL_CMP_DD

      See Also:
        Constant Field Values

    - #### COMPILER_EJB11

          protected static final java.lang.String COMPILER_EJB11

      See Also:
        Constant Field Values

    - #### COMPILER_EJB20

          protected static final java.lang.String COMPILER_EJB20

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### WeblogicDeploymentTool

          public WeblogicDeploymentTool()

  - ### Method Detail

    - #### addSysproperty

          public void addSysproperty(Environment.Variable sysp)

      Add a nested sysproperty element.
      Parameters:
        `sysp` - the element to add.

    - #### createWLClasspath

          public Path createWLClasspath()

      Get the classpath to the weblogic classpaths.
      Returns:
        the classpath to configure.

    - #### setOutputDir

          public void setOutputDir(java.io.File outputDir)

      If set ejbc will use this directory as the output destination rather than a jar file. This allows for the generation of "exploded" jars.
      Parameters:
        `outputDir` - the directory to be used.

    - #### setWLClasspath

          public void setWLClasspath(Path wlClasspath)

      Optional classpath to WL6.0. Weblogic 6.0 will give a warning if the home and remote interfaces of a bean are on the system classpath used to run weblogic.ejbc. In that case, the standard weblogic classes should be set with this attribute (or equivalent nested element) and the home and remote interfaces located with the standard classpath attribute.
      Parameters:
        `wlClasspath` - the path to be used.

    - #### setCompiler

          public void setCompiler(java.lang.String compiler)

      The compiler (switch `-compiler`) to use; optional. This allows for the selection of a different compiler to be used for the compilation of the generated Java files. This could be set, for example, to Jikes to compile with the Jikes compiler. If this is not set and the `build.compiler` property is set to jikes, the Jikes compiler will be used. If this is not desired, the value "`default`" may be given to use the default compiler.
      Parameters:
        `compiler` - the compiler to be used.

    - #### setRebuild

          public void setRebuild(boolean rebuild)

      Set the rebuild flag to false to only update changes in the jar rather than rerunning ejbc; optional, default true. This flag controls whether weblogic.ejbc is always invoked to build the jar file. In certain circumstances, such as when only a bean class has been changed, the jar can be generated by merely replacing the changed classes and not rerunning ejbc. Setting this to false will reduce the time to run ejbjar.
      Parameters:
        `rebuild` - a `boolean` value.

    - #### setJvmDebugLevel

          public void setJvmDebugLevel(java.lang.Integer jvmDebugLevel)

      Sets the weblogic.StdoutSeverityLevel to use when running the JVM that executes ejbc; optional. Set to 16 to avoid the warnings about EJB Home and Remotes being in the classpath
      Parameters:
        `jvmDebugLevel` - the value to use.

    - #### getJvmDebugLevel

          public java.lang.Integer getJvmDebugLevel()

      Get the debug level.
      Returns:
        the jvm debug level (may be null).

    - #### setSuffix

          public void setSuffix(java.lang.String inString)

      Setter used to store the suffix for the generated weblogic jar file.
      Parameters:
        `inString` - the string to use as the suffix.

    - #### setKeepgeneric

          public void setKeepgeneric(boolean inValue)

      controls whether the generic file used as input to ejbc is retained; defaults to false
      Parameters:
        `inValue` - true for keep generic

    - #### setKeepgenerated

          public void setKeepgenerated(java.lang.String inValue)

      Controls whether weblogic will keep the generated Java files used to build the class files added to the jar. This can be useful when debugging; default is false.
      Parameters:
        `inValue` - either 'true' or 'false'

    - #### setArgs

          public void setArgs(java.lang.String args)

      Any optional extra arguments pass to the weblogic.ejbc tool.
      Parameters:
        `args` - extra arguments to pass to the ejbc tool.

    - #### setJvmargs

          public void setJvmargs(java.lang.String args)

      Set any additional arguments to pass to the weblogic JVM; optional.
      Parameters:
        `args` - the arguments to be passed to the JVM

    - #### setEjbcClass

          public void setEjbcClass(java.lang.String ejbcClass)

      Set the classname of the ejbc compiler; optional Normally ejbjar determines the appropriate class based on the DTD used for the EJB. The EJB 2.0 compiler featured in weblogic 6 has, however, been deprecated in version 7. When using with version 7 this attribute should be set to "weblogic.ejbc" to avoid the deprecation warning.
      Parameters:
        `ejbcClass` - the name of the class to use.

    - #### getEjbcClass

          public java.lang.String getEjbcClass()

      Get the ejbc compiler class.
      Returns:
        the name of the ejbc compiler class.

    - #### setWeblogicdtd

          public void setWeblogicdtd(java.lang.String inString)

      Deprecated. Defines the location of the ejb-jar DTD in the weblogic class hierarchy. Should not be needed, and the nested <dtd> element is recommended when it is.
      Parameters:
        `inString` - the string to use as the DTD location.

    - #### setWLdtd

          public void setWLdtd(java.lang.String inString)

      Deprecated. Defines the location of weblogic DTD in the weblogic class hierarchy. Should not be needed, and the nested <dtd> element is recommended when it is.
      Parameters:
        `inString` - the string to use as the DTD location.

    - #### setEJBdtd

          public void setEJBdtd(java.lang.String inString)

      Deprecated. Defines the location of Sun's EJB DTD in the weblogic class hierarchy. Should not be needed, and the nested <dtd> element is recommended when it is.
      Parameters:
        `inString` - the string to use as the DTD location.

    - #### setOldCMP

          public void setOldCMP(boolean oldCMP)

      Set the value of the oldCMP scheme. This is an antonym for newCMP
      Parameters:
        `oldCMP` - a `boolean` value.

    - #### setNewCMP

          public void setNewCMP(boolean newCMP)

      If this is set to true, the new method for locating CMP descriptors will be used; optional, default false.

      The old CMP scheme locates the weblogic CMP descriptor based on the naming convention where the weblogic CMP file is expected to be named with the bean name as the prefix. Under this scheme the name of the CMP descriptor does not match the name actually used in the main weblogic EJB descriptor. Also, descriptors which contain multiple CMP references could not be used.

      Parameters:
        `newCMP` - a `boolean` value.

    - #### setNoEJBC

          public void setNoEJBC(boolean noEJBC)

      Do not EJBC the jar after it has been put together; optional, default false
      Parameters:
        `noEJBC` - a `boolean` value.

    - #### registerKnownDTDs

          protected void registerKnownDTDs(DescriptorHandler handler)

      Register the DTDs.
      Overrides:
        `registerKnownDTDs` in class `GenericDeploymentTool`
      Parameters:
        `handler` - the handler to use.

    - #### getWeblogicDescriptorHandler

          protected DescriptorHandler getWeblogicDescriptorHandler(java.io.File srcDir)

      Get the weblogic descriptor handler.
      Parameters:
        `srcDir` - the source directory.
      Returns:
        the descriptor.

    - #### addVendorFiles

          protected void addVendorFiles(java.util.Hashtable<java.lang.String,java.io.File> ejbFiles,
                                        java.lang.String ddPrefix)

      Add any vendor specific files which should be included in the EJB Jar.
      Overrides:
        `addVendorFiles` in class `GenericDeploymentTool`
      Parameters:
        `ejbFiles` - the hash table to be populated.
        `ddPrefix` - the prefix to use.

    - #### writeJar

          protected void writeJar(java.lang.String baseName,
                                  java.io.File jarFile,
                                  java.util.Hashtable<java.lang.String,java.io.File> files,
                                  java.lang.String publicId)
                           throws BuildException

      Method used to encapsulate the writing of the JAR file. Iterates over the filenames/java.io.Files in the Hashtable stored on the instance variable ejbFiles.
      Overrides:
        `writeJar` in class `GenericDeploymentTool`
      Parameters:
        `baseName` - the base name.
        `jarFile` - the jar file to populate.
        `files` - the hash table of files to write.
        `publicId` - the id to use.
      Throws:
        `BuildException` - if there is a problem.

    - #### validateConfigured

          public void validateConfigured()
                                  throws BuildException

      Called to validate that the tool parameters have been configured.
      Specified by:
        `validateConfigured` in interface `EJBDeploymentTool`
      Overrides:
        `validateConfigured` in class `GenericDeploymentTool`
      Throws:
        `BuildException` - if there is an error.

    - #### isRebuildRequired

          protected boolean isRebuildRequired(java.io.File genericJarFile,
                                              java.io.File weblogicJarFile)

      Helper method to check to see if a weblogic EBJ1.1 jar needs to be rebuilt using ejbc. Called from writeJar it sees if the "Bean" classes are the only thing that needs to be updated and either updates the Jar with the Bean classfile or returns true, saying that the whole weblogic jar needs to be regened with ejbc. This allows faster build times for working developers.

      The way weblogic ejbc works is it creates wrappers for the publicly defined methods as they are exposed in the remote interface. If the actual bean changes without changing the the method signatures then only the bean classfile needs to be updated and the rest of the weblogic jar file can remain the same. If the Interfaces, ie. the method signatures change or if the xml deployment descriptors changed, the whole jar needs to be rebuilt with ejbc. This is not strictly true for the xml files. If the JNDI name changes then the jar doesn't have to be rebuild, but if the resources references change then it does. At this point the weblogic jar gets rebuilt if the xml files change at all.

      Parameters:
        `genericJarFile` - java.io.File The generic jar file.
        `weblogicJarFile` - java.io.File The weblogic jar file to check to see if it needs to be rebuilt.
      Returns:
        true if the jar needs to be rebuilt.

    - #### getClassLoaderFromJar

          protected java.lang.ClassLoader getClassLoaderFromJar(java.io.File classjar)
                                                         throws java.io.IOException

      Helper method invoked by isRebuildRequired to get a ClassLoader for a Jar File passed to it.
      Parameters:
        `classjar` - java.io.File representing jar file to get classes from.
      Returns:
        the classloader for the jarfile.
      Throws:
        `java.io.IOException` - if there is a problem.