" /> LiveCycle Product Blog: April 2008 Archives

« March 2008 | Main | May 2008 »

April 25, 2008

Customizing Workspace in Under 5 Minutes

If you would like to do some simple customizations with WorkSpace 8.0.1 such as switching out the corporate logo and login screens, these steps should make your life easier.

First, download this sample WorkspaceCustomizationBatchFiles.zip from https://share.acrobat.com/adc/document.do?docid=bf6c4f37-12e5-11dd-acd1-65538200e0b2. This will provide you with batch files to help extract and then repackage the WorkSpace EAR file (these are not part of LC ES).

Download and unzip the file onto your C:\ drive into a folder of your choosing. No spaces in the folder name. In the directory you will find 4 batch files marked with easy to follow steps. (The last three could have been combined but I wanted to explain what goes on behind the scenes.)

Preparation
Before running any of these steps, you must have the 2.0.1 Flex JDK in your path as well as your Java SDK. Take note that the compile step will not work with the 3.0.0 JDK compiler.

  • C:\Program Files\Adobe\Flex Builder 3\sdks\2.0.1\bin

  • C:\Program Files\Java\jdk1.5.0_12\bin
  • Step1-CreateCustomizableWorkspaceEnvironment.bat
    The first step takes the EAR file from your J2EE deploy directory and extracts the files you need to customize the look and feel of WorkSpace. Although not required, you may want to change the WORKING_DIR to direct output to another location. What you will need to do is change the JBOSS_DIR to the directory where your LC EAR files are deployed. If you are using the default turn-key installation you won't need to change this.

    The first batch file covers these steps:

  • Set some variables so we're not hard-coding everything

  • Create the required directories

  • Backup the original EAR file

  • Extract the EAR file to a WAR file

  • Extract the WAR contents out to something we can use
  • Once the first step is complete you can quickly make changes to the images and style sheet that provide you with the look and feel of the default Workspace.

    The first image to start with would be the "login_splash.png" which gives you the background on the login screen. You can find this image under C:\WorkspaceCustomization\ExpandedWAR\images\login_splash.png. The next most obvious change would be the "corp-logo.png" image that is displayed at the top left hand corner of WorkSpace. This is found under C:\WorkspaceCustomization\ExpandedWAR\images\corp-logo.png.

    You have a choice to change the images by overwriting the existing files or simply change the HeaderPane or loginSplash sections in the C:\WorkspaceCustomization\ExpandedWAR\lc.css style sheet.

    Step2-CompileNewSWF.bat
    Once the images and style sheet have been changed we need to recompile the workspace-theme.swf file. This can be done by running the step 2 batch file. Again, be sure you are using the 2.0.1 SDK. To check, drop to a command line and run mxmlc.exe to see which version you are using.

    Step3-CreateNewWARFile.bat>
    The next step is to package up the changes into a WAR file. This step will create a new WAR file under C:\WorkspaceCustomization\NewWAR.

    Step4-CreateNewEARFile.bat
    Lastly, run step 4 and the new adobe-workspace-client.ear will be created under C:\WorkspaceCustomization\NewEAR.

    Deploy the new EAR file
    Backup and then delete the original adobe-workspace-client.ear file (Do NOT backup the ear file in the deploy directory or it will remain deployed). Under the default turn-key installation this can be found under C:\Adobe\LiveCycle8\jboss\server\all\deploy\adobe-workspace-client.ear. When you remove the file, you should receive a message in your log that indicates that the application has been undeployed:
    2008-04-25 13:14:19,041 INFO [org.jboss.deployment.EARDeployer] Undeploying J2EE application, destroy step: file:/C:/Adobe/LiveCycle8/jboss/server/all/deploy/adobe-workspace-client.ear

    Now copy the C:\WorkspaceCustomization\NewEAR\adobe-workspace-client.ear into the C:\Adobe\LiveCycle8\jboss\server\all\deploy directory to deploy the newly customized WorkSpace application.

    When deployed correctly your log should indicate that the new application has been deployed:
    2008-04-25 13:16:58,364 INFO [org.jboss.deployment.EARDeployer] Started J2EE application: file:/C:/Adobe/LiveCycle8/jboss/server/all/deploy/adobe-workspace-client.ear

    To test your new application, go to http://yourmachine:8080/workspace and make sure the changes have taken place (be sure to close and reopen your browser in case any caching has occurred).

    You should now have a slightly customized version of WorkSpace deployed!

    If you would like to go one step further and create a separate URL for your new WorkSpace, do the following BEFORE running the step 4 batch file.

  • Open the C:\WorkspaceCustomization\ExpandedEAR\META-INF\application.xml file

  • Change the value between the anotherdepartment tags to a URL that you require

  • Run the step 4 batch file

  • Rename the EAR to something that does not conflict with the already deployed WorkSpace file C:\WorkspaceCustomization\NewEAR\another-adobe-workspace-client.ear
  • This is useful when creating Workspace versions that look slightly different for different groups or departments without having to change the underlying Flex application.

    April 22, 2008

    Easy Web Service Calls to LiveCycle from Flex 3

    If you would like to facilitate accessing LiveCycle Web Services (or any for that matter) in Adobe Flex Builder 3, take a look at the Import Web Service function.

    From within Flex click on the "Data" menu option and then select "Import Web Service". When the wizard starts you will be prompted for a folder where the Action Script is to be generated. Click on the folder of your choice and then select Next. Now enter the location of your WSDL. Under LiveCycle the default WSDL location is as follows: "http://yourservername:theport/soap/services/servicename?wsdl" (a great reason not to use spaces in your service names).

    If your WebService is successfully reached you will then need to select the operation (invoke by default), your package name, and the main class name. If you have problems at this point make sure you can reach the WSDL by using your favorite browser.

    If you are not sure where to start with the code that is generated, open the "yourservicenameServiceService.as". It describes the next steps and provides you with sample code.

    Don't modify the code. When you make changes to your service on the server, select "Data", "Manage Web Services" and then simply click on the update button. This will prompt you to regenerate the code associated with the service (you will need to change your application yourself of course).

    April 21, 2008

    Class Conflicts

    On occasion you may find yourself trying to include Java libraries within your custom components that may be more recent than those already available on the server. DOM4J is a good example.

    In the case of DOM4J you will more than likely find this message in your log file: "Caused by: java.lang.NoClassDefFoundError: org/dom4j/xpath/DefaultXPath" which basically means that you're using DOM4J xPath functionality in your component that technical does not exist on the server.

    Although the best practice would be to ensure your libraries and components are all using the same library versions you can get yourself out of a tough spot by using the JarJar tools to rename the packages within the class you would like to include in your component and deploy the renamed jar with your component to avoid the conflict.

    You will find the tools and instructions here: http://code.google.com/p/jarjar/

    In the case of DOM4J I used the following Ant build to rename both the jaxen and dom4j packages:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="Jar Jar Links" default="jar">
    <target name="jar">
    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="lib/jarjar-1.0rc7.jar"/>
    <jarjar jarfile="dist/etechdom4j-1.6.1.jar">
    <zipfileset src="lib/dom4j-1.6.1.jar"/>
    <zipfileset src="lib/jaxen-1.1-beta-6.jar"/>
    <rule pattern="org.dom4j.**" result="org.etech.dom4j.@1"/>
    <rule pattern="org.jaxen.**" result="org.etech.jaxen.@1"/>
    </jarjar>
    </target>
    </project>

     

    Once the build has been run, you can return to your component code and change your import statements to reflect the new package names. Also be sure to include the new jar file in your build path.

    A big thank you goes out to the Java Guru Venkata for pointing me to this one.

    April 16, 2008

    A Brief History of Adobe LiveCycle

    "LiveCycle" is a pun on the words “life cycle”. At least for Adobe's branding team, it is meant to suggest the life cycle of business processes and customer interactions.

    To IT operations teams the world over, Adobe's LiveCycle is Java J2EE-based server-side software that runs on most major server operating systems (Windows, Linux, Solaris, AIX) and three major J2EE application servers (IBM WebSphere, BEA WebLogic, Red Hat JBoss). It is designed to integrate with and fit into existing enterprise infrastructure software such as databases (Oracle, IBM DB2, Microsoft SQL Server, Sun MySQL), directories (Microsoft Active Directory, Sun ONE, IBM Tivoli, Novell eDirectory) and e-mail (Microsoft Exchange, IBM Lotus Notes).

    The name itself had its beginnings in "Live Paper Server". Along the way, it was also the "Intelligent Document Platform" or IDP.

    Here is Google's News Archive Timeline for the word. First mention (in an Adobe context) occurs on June 8, 2004.

    People who have installed and configured LiveCycle would have noticed "IDP" in the JNDI name of the LiveCycle data source IDP_DS. That stands for Intelligent Document Platform_Data Source. What is today 'Rights Management' was 'Policy Server' at one time and started life as "Enterprise Document Control" or EDC. Hence the JNDI name for the data source EDC_DS.

    For Internet history buffs, the Wayback Machine is a good place to go snoop. Many of the links in this blog entry are to the Wayback Machine. If you get an error on your first try, it is probably because of trouble with intermediate proxy servers and caching. Try again and again and chances are that your requests will eventually succeed.

    Four distinct stages are evident in LiveCycle's evolution so far although these stages overlap one another from a timeline perspective.

    ONE-OFF SERVERS (2001 and earlier)
    -------------------------------------------------------
    Adobe's early efforts produced one-off server products that fit desktop functionality into a server model.

    Content Server
    April 10, 2001 press release announcing Content Server 2.0

    Graphics Server
    September 9, 2002 press release announcing Graphics Server 2.0

    Distiller Server
    December 17, 2001 press release announcing Distiller Server 5.0

    Document Server
    Oct 21, 2002 press release announcing Document Server.

    Acrobat Elements Server
    November 17, 2003 press release announcing Acrobat Elements Server.

    ENTERPRISE PLAY WITH ACQUISITIONS (Jan 2002 - May 2004)
    -----------------------------------------------------------------------------------------
    Adobe starts implementing a planned enterprise strategy, driven by acquisitions.

    Accelio Corporation (formerly JetForm)
    http://www.accelio.com
    February 1, 2002
    Announces plan to acquire Accelio Corporation of Ottawa, Canada. It described itself as "a leading global provider of Web-enabled business process solutions". Accelio's technology and experience formed the basis for Form Server and Form Designer. Accelio's sizable Professional Services team also formed the core of Adobe's Professional Services team, since renamed Adobe Consulting.
    April 15, 2002
    Completes the acquisition.
    For a detailed story on the acquisition, please see the September 2004 issue of Canadian Business magazine online.

    Yellow Dragon Software
    http://www.yellowdragonsoft.com
    November 5, 2003
    Adobe acquires Yellow Dragon Software of Vancouver, British Columbia, a self-described " leader in the development and implementation of ebXML, an open standard technology".

    Q-Link Technologies, Inc.
    http://www.qlinktech.com
    May 3, 2004
    Adobe acquires Q-Link, a privately held company based in Tampa, Florida. At their website, it claimed to have the "leading Business Process Management development platform and the fastest solution for delivering process-driven applications." This technology formed the basis of LiveCycle Workflow/Process Management.

    6.0 Release August 2004
    First release was numbered 6.0 to synchronize with the then shipping version of Adobe Acrobat which was 6.0 (PDF 1.5). Also, the previous release of Form Server from Accelio (C++ based) was 5.0 although Form Server 6.0 was a re-write.
    - Form Manager
    - Form Server (history at Anthony Rumsey's blog)
    - Reader Extensions Server

    BRAND LIVECYCLE WITH INDIVIDUAL PRODUCTS (June 2004 to May 2007)
    --------------------------------------------------------------------------------------------------------
    The brand "LiveCycle" is devised and introduced. All products are now prefixed with LiveCycle, for example, LiveCycle Policy Server.

    7.0 Release July 2005
    Form Server renamed to Forms, and the word "Server" removed from Reader Extensions Server.
    New products added to the family :
    - Policy Server
    - Document Security
    - Workflow
    - Assembler
    - Barcoded Forms ST (stand alone, non-Java (C++), Windows-only)

    An Adobe press release from September 6, 2005

    7.2 Release November 2006
    J2EE Clusters now supported although configuration is manual.
    New products added to the family:
    - Print
    - PDF Generator

    COMMON SERVICE ARCHITECTURE (June 2007 to present)
    --------------------------------------------------------------------------------
    Enterprise Suite (ES) (8.0) June 2007
    Major re-architecture towards SOA, document service container introduced, Form Manager shelved, added Flex-based Workspace user desktop and Eclipse-based Workbench developer IDE. Installation simplified with a robust LiveCycle Configuration Manager (LCM). Solution Components (formerly called "products") now are aware of one another.

    Policy Server renamed to "Rights Management". Document Security renamed to "Digital Signatures". Barcoded Forms ported to J2EE and runs on all supported operating system platforms.

    All solution components now have a "LiveCycle prefix and an "ES" suffix, for example, LiveCycle Rights Management ES.

    ES Update 1 (8.2)
    Not yet released, LiveCycle enters the 64-bit world with support for 64-bit JDKs from Sun (HotSpot), IBM (J9) as well as BEA (JRockit). It will be IP v6-compliant. LiveCycle Configuration Manager (LCM) will now automatically configure a J2EE cluster.

    April 04, 2008

    Adobe LiveCycle ES Update 1

    If you would like to get a taste of the new features and functionality of Adobe LiveCycle ES Update 1 be sure to sign up to the pre-release program here:
    http://www.adobe.com/cfusion/mmform/index.cfm?name=prerelease_interest

    When you register for LiveCycle ES Updatex 1, be sure to also register for the Acrobat / Reader pre-release program to get the best of both of these new worlds.

    April 03, 2008

    Monitor LiveCycle JVM Heap Utilization Using JConsole

    The 1.5 (or 5.0) versions of JDKs from Sun (HotSpot), IBM (J9) as well as BEA (JRockit) come with JConsole, a very user-friendly tool that can be used to monitor heap usage within the JVM. It can also be used to monitor a limited number of LiveCycle metrics (such as the number of invocations).

    In the next release of LiveCycle (8.2.1, also known as LiveCycle ES Update 1) slated for the latter half of 2008, there will be a lot more LiveCycle JMX metrics you can track. Please see Adobe Technical Guide. Don't be spooked by the warning you get on opening it ("the author of this document may have chosen to audit your intearactions with it"). It is Adobe LiveCycle Rights Management ES in action.

    JBoss
    -------
    1) First, you have to re-start JBoss with remote JMX monitoring enabled.
    2) Figure out a port that is not used on the server.
    3) Add the following entries to JBoss' run.bat or run.sh

    rem --------------------------------------
    rem Enable Remote JMX Monitoring
    rem -------------------------------------
    set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=50050
    set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false
    set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false

    for run.sh (Linux)

    # -------------------------------------
    # Enable Remote JMX Monitoring
    # ------------------------------------
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=50050"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
    JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

    4) Run JConsole from the /bin folder of the JDK.

    If you are running JConsole on the same server as JBoss, the JVM will be listed in the 'Local' tab of the JConsole 'Connection' dialog. If JBoss is running on a remote server, click on the 'Remote' tab, and provide the IP address and JMX port (50050 in the example above). If com.sun.management.jmxremote.authenticate is set to true, you would need to provide the userID and password.

    5) Click on the 'Memory' tab. You will see real-time charts you can display for heap memory usage, non-heap memory usage, and memory allocated to the 'survivor', 'eden', 'old generation' and 'permanent generation' memory areas. At the bottom, it will also provide you with the frequency and duration of garbage collections. To learn more about generational heap areas, please see article titled "Tuning Garbage Collection with the 5.0 Java Virtual Machine" at the Sun Developer Network.

    Since IBM's J9 JDK does not implement generational garbage collection, its JConsole display for the 'Memory' tab will look slightly different.

    Running JConsole is not as intrusive as running full-fledged java profilers such as Quest JProbe. Keeping JConsole running during your functional and/or load testing will provide you with valuable insight on the behavior of LiveCycle.

    Clicking on the 'MBeans' tab will let you track some LiveCycle-specific metrics. For example, expand the adobe.com node on the left. Navigate to adobe.com->XMLFormService->RequestCount->AdobeStat. The value of the 'Count' field will tell you how many times the XMLFormService has been invoked since JBoss was started.

    April 02, 2008

    Videos on Customizing Form Guides

    One of the engineers on the Form Guides team has put together a great series of videos on how to customize form guides. Gilles Maurice takes you step-by-step through the process of customizing guide wrappers, panels and components in these videos which are posted on the Adobe Developer Network. They are a great companion to the customizing form guides documentation.