Author Archive: Vishal Gupta

XFA-based PDF forms on Firefox 19

With the release of Firefox 19, Mozilla introduced a built-in PDF viewer. However, the XFA-based PDF forms do not open in the PDF viewer, by default. To open these forms using Firefox 19, you’d need to configure Firefox to open PDFs in Adobe Reader or Adobe Acrobat.

For more details on how to accomplish this, see the knowledge base article at http://helpx.adobe.com/livecycle/kb/xfa-forms-mozilla-firefox-19.html.

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 5.0/10 (2 votes cast)

Importing LiveCycle DSCs using command-line

- Ankush Kumar, Lead Software Engineer @ Adobe

Many a times, we have the requirement to deploy single or group of system or custom DSCs. System DSCs are deployed by LiveCycle Configuration Manager. However, in the case of custom DSCs, we need to manually deploy the component through LiveCycle Workbench. Sometimes, launching Workbench for solely deploying component seems like too much effort. Moreover, it’s not very easy to automate.

You can use the attached sample tool to deploy a DSC using command-line.

  1. Download and extract the tool archive on your machine. It contains a folder libs, a runme.bat file, and an ImportDSC.jar file.
  2. Place <LiveCycle Installation Dir>\sdk\client-libs\thirdparty\*.jar files in libs folder.
  3. Place adobe-usermanager-client.jar and adobe-livecycle-client.jar files in libs folder.
  4. Modify runme.bat accordingly.

The ImportDSC.jar is used in the following way in the runme.bat file (provided classpath is set):

java com.adobe.livecycle.sample.ImportDSC appserver=<websphere|weblogic|jboss> serverhost=<name of machine> port=<port of LC> username=<user to install DSC> password=<password of mentioned user> dscpath=<absolute path till DSC> force=<true|false>

The source code is also included in the archive. Please review it in case of any doubt and modify as per your requirements.

DISCLAIMER: This sample code is not officially delivered or supported as part of Adobe LiveCycle product. One should verify this on a testing environment before employing in production environment.

 

 

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 8.0/10 (1 vote cast)

Error when attempting to interact with a service managed by the Livecycle DSC container

- Siddharth Jain, Quality Manager @ Adobe

Issue

On WebSphere, errors are encountered on attempting to interact with a service managed by the Livecycle DSC container. The service is unexpectedly shown as inactive in the Livecycle administration console. Examination of the server logs (SystemOut.log) shows that the service failed to start due to class-loading issues (ClassNotFoundException errors).

Reason

The issue occurs as a result of a file-lock which prevents the DSC container from properly extracting the class files required by the DSC class-loader to a temporary directory on the local file-system. To confirm that this is the case, note the time-stamp of the ClassNotFoundException error thrown during service startup in the WAS SystemOut.log and then check that the WAS SystemErr.log contains warning messages of the form ‘The process cannot access this file because it is being used by another process’ around the same time.

Solution

To remove the lock, shut down the server and periodically try to manually delete the file for which the file-lock warning is appearing in SystemErr.log (the log file should contain the complete path of the file) . If the deletion succeeds within a reasonable amount of time, start the server and check that things are fine. If the file continues to stay locked for a long period of time, try restarting the machine.

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 0.0/10 (0 votes cast)

Debugging LiveCycle – Working with logs (Part 2)

- Ankush Kumar, Lead Software Engineer @ Adobe

In Debugging LiveCycle – Working with logs (part 1), we covered how to handle logs at application server level. In this blog, we will cover a few areas where we can fine tune the logging in applications itself.

 LCM Logs

As you might have noticed LCM logs are found at <LiveCycle Installation Location>/configurationManager/log. Default logging level of this is INFO. This is governed by properties file kept inside adobe-lcm.jar: \com\adobe\livecycle\lcm\logging\log.properties.

Using this property file, you can:

  • Change Logging Level
  • Define file location and file name.
  • Define rotation policy

If you want to overwrite the default location of this file to a more convenient location, you can do so by modifying <LiveCycle Installation Location>/configurationManager/bin/ConfigurationManager.bat and specifying following system property:

-Djava.util.logging.config.file=<path to file>

 Generating ORB Trace

While working with natives like XMLForms, you can sometimes run into issues where an application abnormally terminates. Following parameters help in generating extra trace information for debugging such issues.

These are required to be placed as argument to the native application:

-ORBtraceLevel 25 -ORBtraceThreadId 1 -ORBtraceInvocations 1 -ORBtraceInvocationReturns 1 -ORBtraceTime 1 –ORBtraceFile <Path to log file>

Also, when we are debugging an issue related to native applications, in System Out logs we can find system natives being invoked and a large IOR is passed to them as input. This IOR can be analyzed by many easily available IOR parsers. (Just Google for them). This can be first step towards debugging natives related problem.

Variable Logging

In order to better understand and debug an orchestration, LiveCycle offers excellent process debug feature. Using workbench, one can easily trace every step of a process and find what exact values any variable hold. For more information, one can refer this blog.

http://blogs.adobe.com/shwetank/2011/11/21/process-recording-feature-of-livecycle-workbench/

But sometimes this gets difficult due to environment constraints and performance overheads. One may want to introduce a step which will log current state of all variables in either System Out log or the log of your choice.

This can be accomplished using Variable Logger service. One can introduce this while designing the orchestration. Now each time the orchestration runs, the values of variables will be logged as the step is executed.

Other Application Logging Locations

Content Services and CMSA Logs

Content Services and CMSA logs are created in working directory of the application server.

LiveCycle Installer Logs

Installer logs can be found in following two locations

  • <LiveCycle Installation Home>
  • <LiveCycle Installation Home>/logs

Service Pack Logs

Service pack logs can be found at <LiveCycle Installation Home>/patch/<Patch Name>/log

CRX and Correspondence Management Logs

From ES3 onwards, you will find CRX and CM logs at <CRX Repository Directory>/logs. (More on this will be covered in next part of blogs)

PDFG Configuration Logs

  • PDFG System Readiness Testing Logs:  <LiveCycle Installation Home>/pdfg_srt/reports
  • PDFG Config Logs: <LiveCycle Installation Home>/logs
VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 10.0/10 (1 vote cast)

Troubleshooting Common LiveCycle Configuration Errors

- Shishir Pandey, Software Engineer @ Adobe

The following lists the common configuration errors, why they occur, and steps to troubleshoot them.

  • Error: Component: com.adobe.xxx version: 10.0.3.20120511.1.316647 introduced a new service, it should not be patched
    Reason: This issue generally occurs when order of operation in Configuration Manager is incorrect after applying a patch. That is, the deployment of the component is performed before configuring and deploying of the EAR files. It usually occurs in command line execution because each step is run separately in this mode.
    Workaround: Re-run the Configuration Manager and ensure that configuration and deployment of ear is done before deploying components.
  • Error: In case of Weblogic, a “null” folder gets created after deploying EARs.
    Workaround: Stop the managed-server first, followed by the node manager, and finally stop the admin-server. Restart them in reverse order. You will see a folder Adobe gets created in the Weblogic domain.
  • Error: The following error occurred while executing this line: java.lang.OutOfMemoryError: Java heap space
    Reason:  This issue generally occurs if the XMX setting is missing from the server configuration.
    Workaround:  Increase the XMX value for the server or restart the server, and re-run Configuration Manager.
  • Error: weblogic.management.NoAccessRuntimeException: Access not allowed for subject: principals=[], on Resource AdobeService Operation: set , Target: EnableSSL at com.adobe.livecycle.bootstrap.bootstrappers.CoreBootstrapper.bootstrap(CoreBootstrapper.java:60)
    Reason:  This error generally occurs due to missing JMX policies in case of Weblogic during the Initialize LiveCycle step of the Configuration Manager.
    Workaround: Configure JMX as described in Creating JMX policies for database initialization. Restart the server and re-run the Initialize LiveCycle step.
VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 7.0/10 (4 votes cast)

Platform Combinations Supported by LiveCycle

Siddharth Jain, Quality Engineering Manager @ Adobe

Adobe  LiveCycle deployment involves many third-party software like Application Servers, Databases and Operating Systems. LiveCycle team certifies certain platform combinations for each release of LiveCycle. For example, the supported platform combinations for our latest LiveCycle ES3 SP1 offering can be looked at http://help.adobe.com/en_US/livecycle/10.0/supported_platforms.html. It provides details of third-party software along with the version details on which LiveCycle is certified and supported. Given that these third party software keep coming up with their latest offerings too, LiveCycle has a third party software patch support statement available at http://helpx.adobe.com/livecycle/kb/livecycle-third-party-software-patch.html.

Together, these two documents should help you figure out whether platform of your choice is supported by LiveCycle or not. In case, you need any clarification, contact Adobe Enterprise Support for guidance.

If you find that platform of your choice is not supported by LiveCycle, for example, you wish support for version X of a database vendor due to your project considerations while LiveCycle supports version Y, you should contact Adobe Enterprise Support who can guide you on next steps.

In addition, Adobe LiveCycle team has a process known as Customer Commit Request in which such a request can be routed to engineering for evaluation if the customer has committed to using LiveCycle by means of purchase or M&S. If engineering finds that there is feasibility to support such a platform for your identified use, it carries out testing on that platform for your use case on LiveCycle version you intend to use. If all goes well, LiveCycle team reverts back in positive and provides support to you for your specific requirement on your desired platform for that LiveCycle release.

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 7.0/10 (1 vote cast)

Debugging LiveCycle – Working with logs (Part-1)

Ankush Kumar, Lead Software Engineer @ Adobe

Logs are the first thing that come to the mind when we run into an issue. Following are some tips on improving the logging on the application side as well as the application server side.

Enabling/Modifying Logging of Application Servers


JBoss

Jboss, which is bundled with LiveCycle has a pre-configured log4j configuration file. It is present as <Appserver Home>/server/<profile>/conf/jboss-log4j.xml. you can track new packages or existing packages at debug level by simply using the following command:

<category name=”com.adobe.mypackage”>

<priority value=”DEBUG”/>

</category>

From here, you can do the following configurations:

  • Change log file path
  • Change log entry structure
  • Specifying log rotation policy
  • Enable cluster logging

The following JBoss wiki can help you play around the logging file.

https://community.jboss.org/wiki/Logging


Weblogic

Weblogic logging can be configured from Weblogic administration console. There are separate administration consoles for each managed server. On Weblogic administration console, logging can be accessed at Environment > Servers > [Name of Managed Server or Admin Server] > Logging.

Here, you can define following configurations

  • Log file path
  • Rotation Policy

However, in the advanced section, you can define:

  • Log entry layout
  • Logging Level
  • Specify package level logging in “Logger Severity Properties” box:
    com.adobe.mypackage=Debug

Note that on Weblogic, if you are running into issues while deploying EARs, you may want to look into Domain logs and Adminserver logs. Both of these are created under <Weblogic Domain>/servers/<Admin Server>/logs.


Websphere

Websphere logs can be found at <Websphere Home>/AppServer/profiles/<Profile Name>/logs/<server name>. You can configure it from Websphere administration console at Websphere Application Servers > [name of server] > Logging and Tracing.

In JVM Logs, you can configure SystemOut and SystemErr logs for your server.

Here, you can configure:

  • Location of Log file
  • Rotation Policy

From Logging and Tracing, with few simple steps, you can enable the trace level logging for a specific package:

  1. Select “Change Log Detail Levels” from General Properties section.
  2. Under “Change Log Detail Levels” page, you can find a text box and tree beneath it with root node as “* [All Components] “.
  3. Expand Root node “* [All Components] > com.adobe.livecycle.*” and click “com.adobe.mypackage.*”.
  4. This will open a context menu. Go to Message and Trace Levels and choose finest from sub menu.
  5. Click Apply button and Save the settings to master configuration. Now you should be back to “Logging and tracing”.
  6. Select Diagnostic Trace link. This will open Diagnostic Trace Service page.
  7. Make sure File radio button is selected. Increase the Maximum File Size to 50 MB, and Maximum Number of Historical Files to 5.
  8. File Name text box shows “${SERVER_LOG_ROOT}/trace.log” by default. This means trace logs are getting created at default logs folder. You can change it by giving any absolute path where you want diagnostic logs to be written.
  9. Click Apply and Save the settings to master configuration.
  10. Restart the server. File specified at step 8 should get created.
VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 6.6/10 (7 votes cast)

Debugging LiveCycle – Working with Application Servers

- Ankush Kumar, Lead Software Engineer @ Adobe

Enabling Debugging

WebSphere

  1. Go to Websphere console -> Servers -> Application servers -> server1 -> Process Definition -> Java Virtual Machine.
  2. Enable the checkbox against Debug Mode.
  3. Fill in the following as debug arguments in the text box:
    Djava.compiler=NONE -Xdebug -Xnoagent
    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777

Weblogic

  1. Go to Home >Summary of Servers >DocServer Server Start tab.
  2. Edit arguments and add:
    • For JRockit R28 and above -XX:
      agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787
    • For others:
      Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777

JBoss

Add following in run.conf (for Non-Windows) and run.conf.bat/run.bat (for Windows):

  • Non-Windows: JAVA_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n $JAVA_OPTS
  • Windows: set JAVA_OPTS=”-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n %JAVA_OPTS%”

Taking Thread Dump

If the server is started through a console/command line and not as a service, press a ctrl+z. The thread dump would be logged in the console window/console logs.

If the server is running as a service, do the following:

Windows

You can use a utility SendSignal. Follow the docs at this URL.

Unix

Identify the process id and then fire command

kill -3 <pid>

JBoss

Got to <jboss_home>\bin and execute following command:

twiddle.bat invoke “jboss.system:type=ServerInfo” listThreadDump > threaddump.html

Weblogic

For Weblogic 10 R3 you can use following way. Go to Weblogic Console -> Environment -> Servers On left side. Then select <your server> -> Monitoring tab -> Threads -> Dump Thread Stacks.

It will display the thread info.

Websphere 6

  1. Login to the machine where the WebSphere server is running.
  2. Open a command prompt and change directory to /WebSphere/AppServer/bin.
  3. Type wsadmin (will take a minute to connect – if authentication is enabled, it will prompt).
  4. Enter set jvm [$AdminControl completeObjectName,process=server1,*].
    • Replace server1 with the actual server you want to take a thread dump from (has to be local to this machine).
    • Enter $AdminControl invoke $jvm dumpThreads.

The thread dump is created in the profile folder for the server you created a dump for. There should be a “javacore.someText.txt” file created. If it’s a cluster, you’ll have to repeat the above steps for each server.

Websphere 7

Using JConsole. Connect the JConsole present in IBM JDK and trigger threaddump using that. You would have to follow the steps mentioned here for it to get to work.

Capturing SQL Logs

The SQL queries by UM can be logged using the default logging system for that system. Following two categories should be used:

  • com.adobe.idp.storeprovider.jdbc – Logs all the queries fired with the value populated.
  • storeprovider.stacktrace – This would also log the stacktrace of the thread which fired the query.

The logging level should be set to TRACE or the lowest for the queries to be logged. For the POF layer use the category com.adobe.pof.adapter for seeing the queries getting fired.

 

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 6.0/10 (1 vote cast)

Adding a custom service in Correspondence Management Solution

- Mayank Gupta, Computer Scientist @ Adobe

Steps to add a custom service in Correspondence Management solution are as follows:

  1. The implementation for this user story involves code changes and rebuilt. So, one is required to setup the development environment via steps mentioned @ Setting up development environment.
  2. Add your sample custom service interface and implementation class in the CorrespondenceManagementSolutionTemplate/Services project for example @ com.adobe.icc package in the source code. See the sample @ http://blogs.adobe.com/LiveCycleHelp/files/2012/06/SampleCustomService1.zip.
  3. Now define your service as a spring bean. For this, add the following entry in your CorrespondenceManagementSolutionTemplate\Services\resources\META-INF\spring\cm\adobe-cm-spring-config.xml file:
    <bean id=”sampleCustomService” class=”com.adobe.icc.SampleCustomServiceImpl” />
  4. Now expose your spring bean as a osgi-service. For this, add the following entry in your CorrespondenceManagementSolutionTemplate\Services\resources\META-INF\spring\osgi-context.xml file:
    <bp:service interface=”com.adobe.icc.SampleCustomService” ref=”sampleCustomService” >
    <bp:service-properties><entry key=”connectors.httpinvoker” value=”true” />
    <entry key=”connectors.httpinvoker.alias” value=”/sampleCustomService” />
    <entry key=”connectors.remoting” value=”true” />
    <entry key=”connectors.remoting.id” value=”sampleCustomService” />
    </bp:service-properties>
    </bp:service>
  5. Rebuild and redeploy the Solution template to view the changes. For information on rebuilding and redeploying, see Building and deploying the Solution Template.

 

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 0.0/10 (0 votes cast)

LiveCycle PDF Generator – Tips and Tricks

- Saurabh Kumar Singh, Computer Scientist at Adobe

 

Following are a few tips and workarounds for LiveCycle PDFG. Please note that the workaround marked as unsupported are not officially supported by Adobe.

  • [Unsupported] On UNIX servers customers can use 64-bit OpenOffice to do OpenOffice based conversions. The obvious benefit from this is the performance improvement we get. To achieve this just point JAVA_HOME_32 to 64 bit version of Java. Same can achieved on widows too but you may observe immediate conversion failures for other native file formats.
  • [Unsupported] Any file which can be opened by Acrobat (like a text file) can be converted to PDF using LiveCycle PDF Generator. You just need to add the comma separated file extension (for example txt for text files) in XPS to PDF file-type setting.
  • A user/administrator can directly jump to PDF Generator UI by hitting http(s)://<server-name>:<port>/pdfgui. This way a user can skip couple of clicks on UI to land on PDF Generator user interface.

Watch this space, for a lot more upcoming tips and tricks.

VN:F [1.9.22_1171]
Was this helpful? Please rate the content.
Rating: 0.0/10 (0 votes cast)