" /> LiveCycle Product Blog: October 2007 Archives

« September 2007 | Main | November 2007 »

October 26, 2007

Adobe Max Livecycle Bootcamp materials

As promised here is a list of the discussed topics and where you can find more information on those.

1. Flex and Livecycle ES integration :

2. How to prefill a workspace form using data coming from a database or an ldap system. You can find a basic sample of this in the SDK (\LiveCycle_ES_SDK\samples\Forms\PrePopulateLDAPQuery). But we are working on a more complete technical paper we will post on the developer website. I will add the link from the moment it is available.

3. Building custom components. You can find a chapter on this in the SDK documentation. We are also working on a more compact technical paper that will be published on the developer website. You can find the component that uploads a file to Adobe Share here.

4. We also had a question on how you can influence print behaviour of the PFD on the client. You can configure a number of things in Adobe Designer for this. I link to a page in the Designer help explaining this.

5. We talked about how to assign a task to the manager of the form iniator. This would be done using the LDAP service. The LDAP service contains the "LDAP Query" operation that allows you to search for the manager attribute of the person who iniated the process (creator_id variable). A more complete tech paper will follow on developer website.

6. There was a question on where to find LC ES Java API code samples. You can find a full list of examples in the SDK Help in the API quick start section.

This is the list of what we can provide at the moment, we will post on the blog if other subjects become available. Don't hesitate to comment this article with extra resources or topics you might be missing.

October 23, 2007

Use ANT to speed up custom component development.

I have been speaking at Max about building custom components. In my example I would use eclipse to write the code and generate the component's jar file. Then I would use LC ES Workbench to deploy the component.

One thing i just found out last weekend, is how to deploy automatically the component from within eclipse, into the LC ES environment.

The LiveCycle ES SDK does containt a Java object doing this, and they provided a sample where they integrate this object into an Ant build script.

So you can add an ANT build script to your eclipse project, that would compile the code, build the jar file, and upload it using the object I mentioned above.

You can find the object here inside the SDK file structure :

LiveCycle_ES_SDK\samples\LiveCycleESAPI\FoundationAPI\DeployComponent

The SDK is installed together with the LC ES software.

October 12, 2007

Tuning the Sun HotSpot JVM

If you have Adobe LiveCycle ES running on JBoss using Sun's HotSpot JDK, the following tuning ideas might help:

* run the JVM in server mode (using the -server JIT compiler) with -server (slower startup, faster runtime performance)

* enable the 'Parallel (Throughput) Garbage Collector' with --XX:+UseParallelGC (this is new in J2SE 5 update 6 - it enables multi-threaded garbage collection). Our experience with the 'Parallel Compacting Collector' (-XX:+UseParallelOldGC) and the 'Concurrent Mark-Sweep Collector' (-XX:+UseConcMarkSweepGC) have been bad so far.

* Configure garbage collector threads to the number of CPU cores available (n) with:
-XX:ParallelGCThreads=n

* Set both the minimum as well as the maximum heap size to 1 GB with:
-Xms1024m -Xmx1024m This is very important in Windows. The JVM requires contiguous memory for its heap. If it grabs all of the heap it needs right at startup when RAM is not highly fragmented, you can prevent potential OutOfMemoryExceptions later on.

* Set the size of the minimum and maximum 'Permanent Generation' to 256 MB with:
-XX:PermSize=256m -XX:MaxPermSize=256m

* Prevent the garbage-collection of classes when no instances of them are left with:
-Xnoclassgc. This option is a little risky, test thoroughly before applying into production use.

* On Windows, use large memory pages with -XX:+UseLargePages. To do this, you also need to give the user whose authorization JBoss uses to run, the User Right to "Lock pages In Memory". You can do this using Group Policy Editor (gpedit.msc). This option is a little risky, JBoss might have trouble coming up.

For a comprehensive list of options for the Sun HotSpot JVM, please see this.

Those pesky "Could not validate SAML Token" exceptions...

If you get the following entry in your J2EE application server log, chances are high that it is caused by your Adobe LiveCycle ES Workbench sessions expiring. The solution is to re-authenticate Workbench.

Could not validate SAML Token --- Assertion is not valid. Current time is greater than NOTonOrAfter time specified in the Assertion

October 10, 2007

Adobe Max Barcelona : Livecycle Bootcamp

Also at Max Barcelona we will host a Livecycle ES Bootcamp session. In the bootcamp session a number of product specialist and Livecycle developers can share experiences, code samples, best practices, etc ... So it's a great session for every Livecycle developer to get to share and learn together with the community.

The way it's setup for Barcelona is that a number of Adobe LS ES product specialist will spend the first 1.5  hour presenting a number of topics we'll prepare. The audience can choose 3 sessions out of a list of 6 sessions ... You'll be able to choose from :

  • Integrating Flex with Adobe Livecycle
  • Using Events in LC ES Process management
  • Customizing LC Workspace
  • Building custom components
  • End points in LC ES
  • Prepopulate a form in LC ES Workspace

The last hour we'll go into an interactive mode which means we'll have 2 options ...

  • Have you guys present stuff you have build on top of LC ES.
  • Answering specific "how-to" questions from the audience.

I'm sure this will not only be a great knowledge share opportunity, but also a great way to get to know some of the LC ES specialist in EMEA.

We are looking forward to meet you guys !

 

** Liveycle Bootcamp is not an introduction session on Livecycle ES. Check out the "Hands on : Building a LC ES Application" if you are looking for an introduction to Livecycle ES **

 


October 02, 2007

LiveCycle for the SQL Server 2005 DBA

If you are a SQL Server 2005 DBA tasked with configuring a database for Adobe LiveCycle ES 8.0.1, the following scripts will help. You can run them using SQL Server Management Studio in the following order as the Instance-wide Administrator (sa). Make appropriate changes for your server envrionment.

Best practice (from a LiveCycle perspective) calls for:
1) the instance login, the database user and the schema to be exactly the same
2) this to be less than or equal to 12 characters in length
3) this to not contain any characters other than letters and numbers (no hyphens)

Also, SQL authentication is preferred over Windows authentication.

Minimum required storage is 300 MB, 500 MB is better.

Create Database
Create Instance Login
Create Database Schema
Create Database User
Alter the Schema
Add dbowner role to Database User

Please note: The Database Instance "Login" name and the LiveCycle Database "User" name have to be the same for LCM bootstrapping to work.

After LiveCycle has been completely configured (all users in your directory have been synchronized with the LiveCycle database), run the following system stored procedure to update database statistics:
sp_updatestats;

To determine the amount of storage used by the LiveCycle database, run the following system stored procedure:
sp_spaceused;

October 01, 2007

Accessing LiveCycle ES Lists & Maps from .Net

With Adobe LiveCycle ES we now have access to several complex, open ended data structures.

Two of the most commonly used, list and map, don’t translate well trough web services when they contain other complex types. These structures are based on underlying Java classes (java.util.list and java.util.HashMap). They are incredibly useful, but can present problems when accessing LiveCycle ES workflows through web services. For example lists of documents and maps of documents get converted to arrays of complex types in the SOAP message.

So if you are writing a client application that will use a LiveCycle ES service (that returns one of these complex types) how do you access their contents?

Scenario
Let’s look at a concrete example to illustrate one way that this can be done:
A Microsoft .Net C# client needs to access an Adobe LiveCycle ES workflow through a web service. The LiveCycle ES workflow will return both a list of documents and a map of documents. The C# application needs to access the PDFs stored in the documents.

Attachments
Complete instructions: A PDF file with a complete description of the solution (way to long for this blog)
Instructions PDF
C# source code: (File is encrypted to avoid the virus checker - the password is: password) Source Code
LiveCycle ES Archive: LCA File

Configuring JBoss 4.0.3 SP1 for SSL

- Stop JBoss if it is running.

Assuming you are on Windows:
- Change directory to the \conf\ folder of your JBoss configuration ("all").

Run the JDK's keytool to create a keystore and a key for SSL
Assuming the JDK's bin folder is at C:\Java\jdk1.5.0_12\bin\:
C:\Java\jdk1.5.0_12\bin\keytool -genkey -keyalg RSA -validity 3650 -alias livecycle -keystore chap8.keystore -storepass livecycle -keypass livecycle -dname "cn=server3.can.adobe.com, OU=Technical Marketing, O=Adobe Systems Canada Inc., L=Ottawa, ST=Ontario, C=ca"

Edit Tomcat's server.xml, uncomment the entry for enabling SSL, change the keystore password
- Go to %JBOSS_HOME%\server\all\deploy\jbossweb-tomcat55.sar\
- Edit server.xml with something other than Notepad or Wordpad (UltraEdit recommended)
- Uncomment entry that says SSL/TLS Connector configuration
- Ensure the value of keystorePass is changed to the proper password ('livecycle' in the example)
- Save and re-start JBoss

The console log should now have an entry that says [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8443

Verify using a browser:
- try the LiveCycle AdminUI URL https://server:8443/adminui
- ignore the warning about the "security certificate not having been issued by a trusted certificate authority"
- Make sure the Login page is loaded