21 March 2016

© Copyright 2003-2019 by TECHNIA AB

All rights reserved.

PROPRIETARY RIGHTS NOTICE: This documentation is proprietary property of TECHNIA AB. In accordance with the terms and conditions of the Software License Agreement between the Customer and TECHNIA AB, the Customer is allowed to print as many copies as necessary of documentation copyrighted by TECHNIA relating to the software being used. This documentation shall be treated as confidential information and should be used only by employees or contractors with the Customer in accordance with the Agreement.

This product includes software developed by the Apache Software Foundation. (http://www.apache.org/).

2. Preface

Technia Value Components, TVC, is a collection of software components that is installed into an existing ENOVIA/Matrix application.

TVC has been designed to have a very small impact/footprint to your existing application, in order to make it easy to install and upgrade TVC. The installer will not modify any existing JSP page or properties files from your ENOVIA installation. If any of the TVC components requires this to be done, this will be mentioned within the respective administration guide. The only file that the installer modifies, which are shared by the existing application, is the web.xml file. One servlet and a mapping to this servlet will be added.

Each component is shipped with its own set of web-application files and a set of MQL scripts for creating the necessary data model entities related to the component.

2.1. System Requirements

Server side
  • The supported ENOVIA versions as of this release are:

    • V6R2013x up to latest

  • The minimum Java version is 1.7

  • Application Server according to the ENOVIA core product requirements

Client side
  • Supported browsers are:

    • Internet Explorer

    • Firefox

    • Chrome

Some exceptions regarding browser supports exist for certain features.

2.2. Installation

TVC is installed by using an installer, which is either an .exe file for use on Windows platforms or a .sh (shell script) file for use on a UNIX platform. In any of the cases, you must have a Java Virtual Machine (>= 1.6.0) installed on the computer where the installation is made from.

A complete installation of TVC consists of:

  • Installing the administrative objects into the database, e.g. the data model.

  • Copy the web-application files into either:

    • The staging directory

      • Deploying to the staging directory requires you to re-run the emxwarutil in order to create the WAR/EAR file.

    • The exploded web-application directory

  • Update the deployment descriptor (web.xml) with the TVC required registrations.

You need a valid license for TVC in order to perform the installation. This license is called technia.license and contains information about the Software/Components you have purchased.

2.3. Preparing the Installation

Following list shows a couple of things that you must have prepared prior to installing TVC.

  1. Whether to install into a staging directory or into an exploded web-application.

    E.g. where the web-application / staging folder is located.

    After installing to the staging directory, you must re-run the emxwarutil again to create a WAR/EAR or exploded web application.

  2. Table-space and index-space for the TVC Administration Vault, unless this is an upgrade of an earlier version (then this vault already exists).

    Even though it is recommended for performance reasons to have separate spaces for a vault, you can leave the table-space and index-space settings empty and use the default spaces.
  3. Username + password for the matrix user that the installation should be performed with (must be a user with system and business privileges).

2.4. After Installation

Depending on what kind of application server you have and which version it has, you might need to perform some additional action after the installation; such as re-deploying the application or clean some temporary folder etc.

For example, in Tomcat you should clean the work folder. The reason is that Tomcat extracts files from the JAR files into a different directory. If this work folder isn’t cleaned, there is a risk that these extracted files are not extracted again from the new JAR file.

In some Weblogic versions, you will need to find old TVC JAR files in a separate folder, as Weblogic internally are copying these, and ensure that those are deleted.

Websphere for example requires re-deploying the application.

Some components might require additional post installation action, which is not performed by the installer. Please consult the administration guide for each component you are installing.

When you have installed TVC into a production environment, you should read this chapter, which contains performance related topics that should be reviewed before taking the production environment into use.

2.5. The License File

The license file must be made available for the class-loader of the application server that you are using, e.g. this file is placed under the WEB-INF/classes folder of your application.

Also note: if you are using TVC from JPOs, and your Matrix installation uses RMI servers – then the license file must also be available somewhere inside a directory included in the MX_CLASSPATH variable.

If you are installing using the staging approach, put the license file under ${RMI_HOME}/staging/ematrix/WEB-INF/classes

2.6. Upgrading Notes

If you are upgrading an older TVC version, some additional actions must be carried out before the installation is made.

  1. Remove the old TVC JAR files starting with tvc- from WEB-INF/lib

  2. Remove all files starting with tvc- from the WEB-INF folder,

  3. Remove the tvc folder (containing JSP files) either under your $APPLICATION_HOME/ematrix directory or $STAGING_HOME/ematrix directory (depending on your installation method).

2.6.1. Notes about ENOVIA RPT

If you also have the ENOVIA RPT product, please read this information:

ENOVIA RPT is based upon TVC and is bundled with a specific TVC Core version. TECHNIA will always provide new Hot Fix versions of ENOVIA RPT that is based upon the latest TVC core version in order to be able to use TVC with ENOVIA RPT. So before installing a newer TVC release, make sure that you also have a proper ENOVIA RPT version available for upgrade. Please contact TECHNIA in case you have any questions about what hot fix version to be used.

2.7. Configuring TVC

TVC can be configured in many different areas. There are both configuration objects that defines behavior on a per use-case level, but there are also configuration parameters that can be applied to TVC as such (global TVC system parameters).

The latter parameters are typically entered within the web.xml file (the application deployment descriptor file). And more specific, these parameters are added as init-parameters to the TVC servlet that is being added to web.xml by the installer.

Typically after running the TVC installer, you will in web.xml have these lines added:

<servlet>
    <servlet-name>tvcaction</servlet-name>
    <servlet-class>com.technia.tvc.core.TVCServlet</servlet-class>
    <init-param>
        <param-name>tvc.core.productionMode</param-name>
        <param-value>TRUE</param-value>
    </init-param>
</servlet>
...

<servlet-mapping>
    <servlet-name>tvcaction</servlet-name>
    <url-pattern>/tvc-action/*</url-pattern>
</servlet-mapping>

Throughout the different TVC Administration Guides, you will see instructions on how to apply so called init-parameters to change some behaviour. These are all added as init-param like shown in the example above.

As of version 2012.1.0 it is also possible to define the init-parameters in a properties file called tvc.properties available in the classpath. E.g. you could add a file called tvc.properties within the /WEB-INF/classes folder of your application that holds the init-parameters. The benefit is that you do not need to modify the web.xml file when applying new init-parameters and also, the properties file format is less verbose than when adding init-param elements in the web.xml.

The above example would have been written as below if defined in a tvc.properties file:

tvc.core.productionMode = TRUE
tvc.core.logLevel = ERROR
The init-parameters in web.xml takes precedence over the properties defined in the tvc.properties file.

As of version 2016.1.0, init parameters can also be specified as Java system parameters, e.g. as –D parameters provided via command line.

The order of precedence are:

  • tvc.properties file(s) read through the classpath

  • web.xml init parameters

  • System properties

While navigating to TVC page from Enovia OOTB table, sometimes leading and trailing white spaces gets added to the object Id parameter on the request to the server. This can now be trimmed using the below filter in web.xml.
<filter>
    <filter-name>TVCObjectIdFilter</filter-name>
    <filter-class>com.technia.tvc.core.filter.TVCObjectIdFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>TVCObjectIdFilter</filter-name>
    <url-pattern>/common/emxTree.jsp</url-pattern>
</filter-mapping>

3. Running the Installer

3.1. Win32 Installation

The Win32 installer has a graphical user interface that will guide you through the installation of the TVC Software. The installer also has a built-in help that will give you detailed information about each step.

In order to install TVC successfully, you must ensure that the computer you do the installation from have following software setup and working properly:

  • A Java Virtual Machine (>= 1.7.0). To launch installer without a jre installed you can use a jdk from command line with command as example java -jar tvc-2018.4.1-setup.exe

  • The ENOVIA/Matrix Server installation

    • The Windows environment must be configured and setup to work against the database, into which the TVC is supposed to be installed into. The installer will use ${ENOVIA_SERVER_HOME}/bin/winnt/mql.exe to perform the installation.

  • Tablespace and Indexspace for the administration vault (Not required but recommended)

Following decisions needs to be taken during the execution of the installation:

  • Whether or not to install the application files to the staging directory OR directly to an exploded application (an already deployed web-application).

  • Username and password for a user having system privileges + business privileges.

NOTE: The installer will by default rely on the ematrix.ini file.

3.1.1. Running the Installer

The installer has a couple of steps that you need to go through in order to install the TVC successfully, typically:

  • Select License File

  • Select components to be installed

  • Select staging/explode installation mode, if to install schema and/or application files.

  • Select ENOVIA/Matrix Server installation folder (if staging mode is selected)

  • If the data model is being selected for install:

    • Database user credentials (username + password of a matrix system+business admin)

    • TVC Administration Vault settings (Table- and index- space).

    • Wiki Specific: Vault settings (Table- and index- space).

    • XBOM Specific: Vault settings (Table- and index- space).

    • Collaboration specific: Vault Settings (Table- and index- space).

  • Web-application directory (If exploded mode is selected)

Depending on what you select to install, and how to perform the installation (staging/exploded) etc. the number of steps required to go through varies.

NOTE: Even though you can install the application files without doing the schema installation (and vice versa), you must perform both of these prior to use the TVC successfully.

3.2. UNIX

For UNIX environments, the tvc-<VERSION>-setup.sh installer should be used. This installer is command-line based, and can be ran on a head-less environment that lacks a window system.

Before running this installer, ensure that the executable flag is set. E.g. run a command similar as below:

chmod u+x tvc-<VERSION>-setup.sh

When the installer starts, it will look for a valid Java VM under the JAVA_HOME environment variable. If no such variable is set, or the variable is incorrect the installer will terminate.

NOTE: This file contains binary data; don’t transfer this file via FTP in ASCII mode. This will result in a broken installer.

In order to install the TVC components, you must ensure that the computer you do the installation from have following software setup and working properly:

  • A Java Virtual Machine (And the JAVA_HOME environment variable set)

  • The ENOVIA Server installation

    • All database updates are done through MQL (the script mql under $ENOVIA_SERVER_ROOT/scripts).

    • The MQL script must be configured and setup to work against the database, into which the ENOVIA Report Generator is supposed to be installed into.

  • Tablespace and Indexspace for the administration vault (Not required but recommended)

Following decisions needs to be taken during the execution of the installation:

  • Whether or not to install the application files to the staging directory OR directly to an exploded application (an already deployed web-application).

  • Username and password for a user having system privileges + business privileges.

    • The system privileges are needed since the installer will add a vault to the database.

Once the installer has started successfully, you will on the terminal see a screen similar as below:

bash-2.05$ ./tvc-2014.1.0-setup.sh
Starting TVC 2014.1.0 installer. Please wait!
Checking for a valid Java VM...
--> A valid Java VM were found under '/opt/java/jdk1.6.0_10/'
About to launch the installer...
 - Please wait while starting the installer...
 - --> TVC version is: 2014.1.0

======================================================================
TVC Installer
======================================================================
Press CTRL-C to quit the installation

 - Where is your license file (tvc.license) located ? .
 - Install datamodel (Y/N) {Y} ?
 - Install sample data (Y/N) {Y} ?
 - Enter the name of the user having system privileges
{creator} ?
 - Enter the password for this user {} ?
 - What is the name of the tablespace, for the admin
vault {} ?
 - What is the name of the indexspace, for the admin
vault {} ?
 - What is the name of the tablespace, for the XBOM
manager {} ?
 - What is the name of the indexspace, for the XBOM
manager {} ?
 - Install web application (Y/N) {Y} ?
 - Install webapplication files into the staging or an
exploded directory (E/S) {S} ? E
 - Where is your ENOVIA server installed ?
/path/to/enovia
 - Where is your web application located ?

Before the actual installation starts, you will be asked to verify the entered values.

3.3. Configuring the Deployment Descriptor (web.xml)

The TVC installer adds a servlet definition to the web.xml file.

To configure certain aspects of TVC one can add so called init-parameters to the servlet.

Note 1: Since the web.xml file must conform to the J2EE web application DTD, the application server will not start if aren’t careful. Review all changes you made to this file before starting the application server.

Note 2: Some application servers require you to re-deploy the application after changing the content of the web.xml file.

<servlet>(1)
    <servlet-name>tvcaction</servlet-name>
    <servlet-class>com.technia.tvc.core.TVCServlet</servlet-class>
    <init-param>
        <param-name>tvc.core.productionMode</param-name>(2)
        <param-value>TRUE</param-value>
    </init-param>
    <load-on-startup>100</load-on-startup>(3)
</servlet>

Explanation of the numbered items in the table above

1 The servlet element must be in line with the other servlet elements. Either just before, in between or just after the other servlet elements.
2 The tvc.core.productionMode flag should be set to TRUE in a production environment. See this chapter for additional information.
3 Defines the load order for the TVC servlet. This value must be higher than the Framework servlet load-on-startup value. NB: If the Framework servlet isn’t pre-loaded, the TVC servlet should not be pre-loaded either.

The TVC installer also adds a servlet mapping in the web.xml file. This should look like:

<!-- TVC servlet mapping -->
<servlet-mapping>
    <servlet-name>tvcaction</servlet-name>
    <url-pattern>/tvc-action/*</url-pattern>
</servlet-mapping>

NOTE: You should not change the URL pattern.

3.4. Unattended (Silent) Install

The installer can be run in an unattended (silent) mode, without going through the GUI.

3.4.1. Example

tvc-<VERSION>-setup.exe -silent -license=<path-to-license-file>
-exploded -target=<path-to-webapp-dir> -schema=<true|false>
-enoviahome=<path-to-enovia-server-install-folder>

3.4.2. Parameters

Parameter Required Description

-silent

Yes

You need this parameter in order to start the installer in silent mode

-license=<file>

Yes

The license file (note: you need to provide the full path to the technia.license file)

-enoviahome=<path>

Yes

Can be omitted if you don’t install the schema and the web application files are deployed to an exploded web-application

-target=<path>

No (Unless -exploded is defined)

If you want to install the web-app files into an exploded directory, you must specify this

-staging

One of -exploded or -staging

-exploded

One of -exploded or -staging

-webappname=<name-of-webapp>

No. Default is ematrix

Used together with -staging to specify a different webapp (within the staging folder)

-component=<comma separated list of components>

No

By default, all components that are part of the license will be installed. Following list shows the recognized names for the components:

  • Core = core

  • Structure Browser = structurebrowser

  • Grid Browser = gridbrowser

  • Report Generator = reportgenerator

  • Graphic Reporting = graphicreporting

  • Personal Browser = personalbrowser

  • Office Integration = office

  • MCAD Optimizer = mcadoptimizer

  • XBOM Manager = xbom

  • ECO/ECR Manager = ecomgmt

  • Configuration Manager = cm

-schema=<boolean>

No

It’s recommended to install the schema, even though it’s not necessary.

-sampleconfig

No

Sample configurations for TVC

-user=<name-of-user>

Yes, if you want to install the schema

The name of the user that performs the schema installation. Typically a user with system and business privileges is required such as creator

-pass=<the secret password>

Yes, if you want to install the schema

The password for the user that performs the schema installation.

-tablespace=<name-of-tablespace>

Yes, if you want to install the schema

If you use specific table-spaces for the TVC Administration vault, specify the name of the table-space here.

-indexspace=<name-of-indexspace>

Yes, if you want to install the schema

If you use specific table-spaces for the TVC Administration vault, specify the name of the index-space here.

-xbomtablespace=<name-of-tablespace>

Yes, if you install the schema AND you install the XBOM component

Specify the table-space for the XBOM vault.

-xbomindexspace=<name-of-indexspace>

Yes, if you install the schema AND you install the XBOM component

Specify the index-space for the XBOM vault.

-wikitablespace=<name-of-tablespace>

Yes, if you install the schema AND you install the WIKI component

Specify the table-space for the WIKI vault.

-wikiindexspace=<name-of-indexspace>

Yes, if you install the schema AND you install the WIKI component

Specify the index-space for the WIKI vault.

-collaborationtablespace=<name-of-tablespace>

Yes, if install the schema AND you will use the collaboration component

Specify the table-space for the XBOM vault.

-collaborationindexspace=<name-of-indexspace>

Yes, if install the schema AND you will use the collaboration component

Specify the index-space for the XBOM vault.

-addLBFilter=<boolean>

No

By default the LBFilter is added to WEB.XML, however, you can control this via this flag also

-addatmosphereservlet=<boolean>

No

If set to true the atmosphere servlet will be added to WEB.XML. Convenient if you intend to use the Collaboration component features.

4. Performance

This chapter describes some topics that might have severe impact on the overall performance of TVC.

4.1. Production Mode

When TVC is used in a production environment, you should ensure that TVC is running in production mode.

This is important, as TVC in production mode will not check for modifications of administrative objects and/or configuration objects at runtime.

This feature is of course useful in a development environment, where changes are frequently made to configuration objects and having to reload the TVC cache’s all the time after doing these modifications are time consuming, but in a production environment, these changes are rarely done and this overhead should be avoided.

The initialization parameter that controls the production mode setting is defined in web.xml as below:

<init-param>
    <param-name>tvc.core.productionMode</param-name>
    <param-value>TRUE</param-value>
</init-param>

If this parameter is missing from the web.xml file, TVC will by default assume production mode.

4.2. Logging

In a production environment, the amount of log output should be reduced. In TVC, the log output is controlled by setting the log-level to a certain value. Possible values for the log-level are

  • OFF

  • FATAL

  • ERROR

  • WARN

  • INFO

  • DEBUG

The log level is set in the web.xml file as shown below:

<init-param>
    <param-name>tvc.core.logLevel</param-name>
    <param-value>FATAL</param-value>
</init-param>

A reasonable value for this parameter in a production environment is either FATAL or ERROR. In development environments, you might want to set this value to INFO or DEBUG. However, please remember that the latter log-levels will generate a larger amount of output.

4.3. Weblogic

If you are using Weblogic as application server, you should carefully review the settings of the parameters discussed below as these will have severe negative impact of the performance if they are not defined accordingly.

4.3.1. servlet-reload-check-secs

This parameter defines how often Weblogic will check for servlet modifications. The value of this parameter should be -1. By default, Weblogic sets this value to 1, hence, Weblogic will check if a servlet has been change once per second. This is completely unnecessary, as a servlet will never change in a production environment, and the overhead of checking this is significant.

Sample weblogic.xml with servlet-reload-check-secs set to a value of -1

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web
Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
    <container-descriptor>
        <servlet-reload-check-secs>-1</servlet-reload-check-secs>
    </container-descriptor>
</weblogic-web-app>

4.3.2. pageCheckSeconds

This parameter defines how often Weblogic will check if an already compiled JSP needs to be recompiled.

If you are in a production environment you will not need the JSP page to be checked every second (which is the default value). You should change it to -1 (never perform the check).

Sample weblogic.xml, illustrating how this parameter can be set

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
    <jsp-descriptor>
        <jsp-param>
            <param-name>pageCheckSeconds</param-name>
            <param-value>-1</param-value>
        </jsp-param>
    </jsp-descriptor>
</weblogic-web-app>

5. Troubleshooting

This section contains sections that help resolving issues that may arise after installing TVC. Note that the server should be configured, regarding memory settings etc, according to Matrix One installation guide.

5.1. Problems with the Schema Installation

If you see the error message shown below, when trying to install the schema – Then modify your ematrix.ini/matrix.ini file to contain the following setting:

MX_TCL_ANSI_NUMERIC=true
!Aborting transaction! +
(ERROR) Patch failure Error: syntax error in expression "1.0 > -1 ? 0 :
1" +
Installation failed! Please check the log file for details.

5.2. Using Weblogic with Apache

When using Apache as a front-end to Weblogic, the Apache server must be configured to pass the requests matching /tvc-action/* to the application server.

Typically, this is made in the httpd.conf file under the conf directory in apache.

For the Weblogic proxy module, the example below illustrates how this is accomplished.

<Location /ematrix/tvc-action>
setHandler weblogic-handler
</Location>

5.3. OutofMemoryError

This can happen either because of a memory leak or because the application simply is trying to store more stuff in memory than you have space for. Another reason could be that the JVM cannot load the classes since the memory area where the static data, such as class definitions are stored, is too low.

The below information is not valid for Java 8 and later:

There are two parameters, -XX:PermSize and -XX:MaxPermSize, that control the size of the permanent area. This area may need to be increased if large numbers of classes are being loaded.

Increase the –XX:MaxPermSize parameter to, for example 64M, and see if this resolves the issue.

5.4. Problems with TVC Cache

If you encounter problems with the TVC cache, for example your update of a command in a toolbar is not updated automatically when you execute the structure browser, please verify the following:

  1. The production mode flag in your web.xml file is set to FALSE. If set to TRUE, TVC will never check for updates of schema objects at run-time.

  2. Some changes to commands and menus do not affect the modified timestamp of the administrative object in Matrix. (TVC uses the modified timestamp of the administrative objects to check if they are updated or not).

The following examples from a 10.5 MQL client illustrate the timestamp problem:

% mql add command TEST;
% mql pri command TEST select modified dump;
*9/22/2004 5:13:27 PM*
% mql mod command TEST add setting X Y;
% mql pri command TEST select modified dump;
*9/22/2004 5:13:27 PM*
% mql mod command TEST description "";
% mql pri command TEST select modified dump;
*9/28/2004 9:40:53 AM*

or

% mql add menu Y;
% mql pri menu Y select modified dump;
9/28/2004 9:50:37 AM
% mql add command X;
% mql mod menu Y add command X;
% mql pri menu Y select modified dump;
*9/28/2004 9:50:37 AM*
% mql mod menu Y description "";
% mql pri menu Y select modified dump;
9/28/2004 9:51:23 AM

E.g. the modified timestamp is not updated correctly when adding or modifying a setting or when adding a command to a menu. This is a bug in core matrix.

This problem might have been fixed in later versions of ENOVIA/Matrix.

6. Other Configurations

6.1. Configuring TVC Log Directory

The TVC log files are by default written into a directory provided by the Application Server.

You can override this directory by applying an init-parameter in web.xml within the TVC Servlet definition:

<init-param>
    <param-name>tvc.core.logDir</param-name>
    <param-value>/var/logs/tvc</param-value>
</init-param>

6.2. Using TVC with Proxy Server or Load Balancer

Internally in TVC, URL’s are built based upon the information available from the HttpServletRequest API provided by the application server (server host/server port/scheme).

In cases when you have a proxy server, the application server must be configured to be aware of this in order to return correct information on the HttpServletRequest class; otherwise the URLs that are generated won’t point correctly.

The proxy server typically passes the correct values behind the request headers:

  • X-Forwarded-Host

  • X-Forwarded-Port

  • X-Forwarded-Proto

This filter will then honor the values set there. If no such header is present, this filter will fall back to the default value obtained via the HttpServletRequest API.

In TVC, we have provided a servlet filter will be able to override the return values for server-host, server-port and scheme on the HttpServletRequest instance based upon the above request headers.

The filter is added to web.xml by the TVC Installer, and will look like this:

<filter>
    <filter-name>LBFilter</filter-name>
    <filter-class>com.technia.tvc.core.util.http.LBFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>LBFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

If no init parameter is provided, the default request headers "X-Forwarded-Host", "X-Forwarded-Port" and "X-Forwarded-Proto" will be used. To specify other request header, you can add init parameter with names host, port and/or scheme and provide the name of the header as value.

Example below:

<filter>
    <filter-name>LBFilter</filter-name>
    <filter-class>com.technia.tvc.core.util.http.LBFilter</filter-class>
    <init-param>
        <param-name>host</param-name>
        <param-value>Z-Forwarded-Host</param-value>
    </init-param>
    <init-param>
        <param-name>port</param-name>
        <param-value>Z-Forwarded-Port</param-value>
    </init-param>
    <init-param>
        <param-name>scheme</param-name>
        <param-value>Z-Forwarded-Proto</param-value>
    </init-param>
</filter>

If you specify empty value for the parameter, it will then take the "default" value. E.g.

    ...
    <init-param>
        <param-name>host</param-name>
        <param-value></param-value>
    </init-param>
    ...

You can specify static values using "static:" prefix as shown below:

    ...
    <init-param>
        <param-name>host</param-name>
        <param-value>static:plm.technia.com</param-value>
    </init-param>
    ...

6.2.1. Legacy filter - Proxy Filter

An old filter serving the same or similar purpose as the above filter is still part of TVC. This filter may be used instead of the above filter, however, this filter is less dynamic than the LBFilter.

Do not enable both the LBFilter and this legacy filter
<filter>
    <filter-name>proxy-filter</filter-name>
    <filter-class>com.technia.tvc.core.util.http.ProxyFilter</filter-class>
    <init-param>
        <param-name>scheme</param-name>
        <param-value>http</param-value>
    </init-param>
    <init-param>
        <param-name>hostname</param-name>
        <param-value>hostname-of-proxy</param-value>
    </init-param>
    <init-param>
        <param-name>port</param-name>
        <param-value>port-to-proxy</param-value>
    </init-param>
</filter>

The mapping to this filter should be created as below:

<filter-mapping>
    <filter-name>proxy-filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

6.3. Forcing a Custom Locale

Sometimes, it can be useful to force the client into showing the web application in a specific language, even though the browser is set to another one.

For example, if the client browsers are using German as their default language, then all the labels in the web application will be shown in German, wherever a specific label exists, and if not, it will default to English. However, if not all labels have been translated, then there will be a mix of the default language, usually English, and German. This may not be the desired behavior of the application.

In TVC, we have provided a servlet filter, which if configured to be used, will be able to override the locale used on the HttpServletRequest instance. When this filter is set, the locale specified will always be used, regardless of client setting.

To configure this, modify your web.xml file and add the filter and its mapping as shown below:

<filter>
    <filter-name>**locale**</filter-name>
    <filter-class>**com.technia.tvc.core.util.http.SetLocaleFilter**</filter-class>
    <init-param>
        <param-name>**locale**</param-name>
        <param-value>**EN**</param-value>
    </init-param>
</filter>

The init-param values also need to be adjusted.

The mapping to this filter should be created as below:

<filter-mapping>
    <filter-name>locale</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

6.4. Replace the "TVC Shadow Agent" with "User Agent"

In order to reduce the consumption of licenses, you can replace the default super-user used by TVC, called "TVC Shadow Agent", with the super-user used by the ENOVIA application.

This can be done in a couple of different ways, see explanation below:

  1. Add init parameters to the tvc-servlet within "web.xml" like the example below:

    <init-param>
        <param-name>tvc.core.user</param-name>
        <param-value>User Agent</param-value>
    </init-param>
    <init-param>
        <param-name>tvc.core.password</param-name>
        <param-value>the-password</param-value>
    </init-param>

    This alternative is sometimes not OK as you store the password within the web.xml file in clear text.

  2. Modify a program called "TVCInitSystemUser".

    This program holds the user-name and password (in encrypted format) as properties, and is read when TVC is started (unless you have configured a user/password as described above).

    From MQL; you can do:

    pri program TVCInitSystemUser;

    This gives something like:

    program TVCInitSystemUser
    mql
    execute immediate
    execute user
    description
    code '#@ version 1.0 name TVCInitSystemUser symname
    program_TVCInitSystemUser
    tcl;
    eval {
    set sProgName [DEV:mql get env 0]
    set sUserName [mql pri program $sProgName select
    property[DEV:USER_NAME].value dump |mql pri program _sProgName select
    property-(USER_NAME-).value dump -]
    set sUserPass [mql pri program $sProgName select
    property[DEV:USER_PASS].value dump |mql pri program _sProgName select
    property-(USER_PASS-).value dump -]
    return "$sUserName|$sUserPass"
    }
    '
    nothidden
    property USER_NAME value TVC Shadow Agent
    property USER_PASS value =uvZVYq2ODJU=
    property application value TVC core
    property installed date value 11-19-09
    property installer value Technia AB
    property original name value TVCInitSystemUser
    property version value 1.0
    created 11/19/2009 10:49:18 PM
    modified 1/20/2010 2:03:23 PM

    You could change the USER_NAME property and USER_PASS property. The value for the latter is the encrypt password value.

    E.g.

    tcl;
    
    mql mod program TVCInitSystemUser property "USER_NAME" value "User
    Agent";
    
    mql mod program TVCInitSystemUser property "USER_PASS" value [mql
    encrypt password "the-password"];

6.5. FCS Support

Some of the features in TVC that handles file uploads has support for FCS enabled (File Manager, Collaboration, Mobile Access). This will cause cross domain request which by default is blocked by modern browsers. There are possibilities to enable this via usage of the so called CORS (Cross Origin Resource Sharing) mechanism. This can be done by adding a servlet filter enabling CORS support to ALL FCS instances. Such servlet filter is provided with TVC Core and can be applied like shown below:

<filter>
    <filter-name>CORSFilter</filter-name>
    <filter-class>com.technia.tvc.core.util.http.CORSFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CORSFilter</filter-name>
    <url-pattern>/servlet/fcs/*</url-pattern>
</filter-mapping>

6.6. File Manager vs ENOVIA 16x and Later

Due to issues of ENOVIA, you need to modify web.xml after installing TVC and add a by-pass filter as shown below:
<filter-mapping>
    <filter-name>ByPassPatternFilter</filter-name>
    <url-pattern>/tvc/office/client/*</url-pattern>
</filter-mapping>

This is needed for Applet based clients, which needs to be able to download the JAR files.

6.7. Caching Client Resources

This feature requires https

TVC can use Service Workers to cache some static resources (.js, .css, .png etc.) so that they are served from the cache instead of making network requests. Add following properties to enable this -

tvc.core.clientsidecache.enabled=true - Used to enable client side caching (default = false)

tvc.core.serviceworker.enabled=true - Used to enable TVC static resource caching (default = true)

In addition, following step is needed to inject Service Worker within the emxNavigator.jsp (resides in the common folder in your application directory) or any top level entry page, e.g. emxLogin.jsp. Add following line immediately after the <head> tag.

...
<head>
<%@include file = "/tvc/core/tvcServiceWorker.jspf" %>
...

7. 3rd-party Dependencies

TVC depends upon a number of open-source libraries/frameworks. Below is a list of the libraries/frameworks included in TVC and their version, license and their package name in TVC.

7.1. Backend

Module Version Package License Copyright

Struts (Patched to address CVE-2016-1181 and CVE-2016-1182)

1.3.10

com.technia.tvc.struts

ASL 2.0

Copyright 2000-2007 The Apache Software Foundation

Commons Digester

2.0

com.technia.tvc.commons.digester

ASL 2.0

Copyright 2001-2010 The Apache Software Foundation

Commons Bean Utils

1.9.3

com.technia.tvc.commons.beanutils

ASL 2.0

Copyright 2000-2016 The Apache Software Foundation

Commons Chain

1.2

com.technia.tvc.commons.chain

ASL 2.0

Copyright 2003-2008 The Apache Software Foundation

Commons File Upload

1.2.1

com.technia.tvc.commons.fileupload

ASL 2.0

Copyright 2002-2008 The Apache Software Foundation

Commons Logging

1.2

com.technia.tvc.commons.logging

ASL 2.0

Copyright 2003-2014 The Apache Software Foundation

Commons Validator

1.3.1

com.technia.tvc.commons.validator

ASL 2.0

Copyright 2001-2006 The Apache Software Foundation

Commons Collections

3.2.2

com.technia.tvc.commons.collections

ASL 2.0

Copyright 2001-2015 The Apache Software Foundation

Commons Collections (Java 5)

4.0.1

com.technia.tvc.commons.collections15

ASL 2.0

Copyright 2001-2004 The Apache Software Foundation

Commons IO

1.4

com.technia.tvc.commons.io

ASL 2.0

Copyright 2001-2008 The Apache Software Foundation

Commons JXPath

1.3

com.technia.tvc.commons.jxpath

ASL 2.0

Copyright 2001-2008 The Apache Software Foundation

Commons Lang

2.4

com.technia.tvc.commons.lang

ASL 2.0

Copyright 2001-2008 The Apache Software Foundation

Commons NET

2.0

com.technia.tvc.commons.net

ASL 2.0

Copyright 2001-2008 The Apache Software Foundation

Commons Sanselan

0.97

com.technia.tvc.sanselan

ASL 2.0

Copyright 2007-2009 The Apache Software Foundation

Apache ORO

2.0.8

com.technia.tvc.oro

ASL 1.1

Copyright 1999-2004 The Apache Software Foundation

Batik

1.7

com.technia.tvc.batik

ASL 2.0

Copyright 1999-2007 The Apache Software Foundation

JFreeChart

1.0.13

com.technia.tvc.jfree

LGPL 2.1

Copyright 2000-2009, by Object Refinery Limited and Contributors

IText

2.1.7

com.technia.tvc.itext

MPL 1.1

Copyright Bruno Lowagie

POI

3.6

com.technia.tvc.poi

ASL 2.0

Copyright 2002-2010, The Apache Software Foundation.

Log4j

1.2.15

com.technia.tvc.log4j

ASL 2.0

Copyright 2010 The Apache Software Foundation

XML Graphics

1.5

com.technia.tvc.xmlgraphics

ASL 2.0

Copyright 2006-2012 The Apache Software Foundation

WinZipAES

1.0.1

com.technia.tvc.winzipaes

ASL 2.0

Copyright 2011 Google Inc

MiGBase64

2.2

com.technia.tvc.mig

BSD

Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (base64 @ miginfocom . com)

Bouncy Castle

138

com.technia.tvc.bouncycastle

MIT

Copyright (c) 2000-2008 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)

UnboundID LDAP

2.3.1

com.technia.tvc.unboundid

LGPL 2.1

Copyright © 2008-2012 UnboundID Corp.

Apache FOP

0.20.5

com.technia.tvc.fop0205

ASL 1.1

Copyright © 1999-2003 The Apache Software Foundation. All rights reserved.

Apache FOP

1.1

com.technia.tvc.fop

ASL 2.0

Copyright 1999-2012 The Apache Software Foundation

PDFBox

1.5.0

com.technia.tvc.pdfbox

ASL 2.0

Copyright 2010 The Apache Software Foundation

JempBox

1.5.0

com.technia.tvc.jempbox

ASL 2.0

Copyright 2010 The Apache Software Foundation

FontBox

1.5.0

com.technia.tvc.fontbox

ASL 2.0

Copyright 2010 The Apache Software Foundation

XMLmind XSL-FO Converter

4.8.0

com.technia.tvc.xmlmind

Commercial

Copyright (c) 2008-2012 Pixware SARL.

Atmosphere

2.2.6

org.atmosphere

ASL 2.0 + CDDL

EHCache

2.6.9

net.sf.ehcache

ASL 2.0

Copyright Terracotta, Inc., a wholly-owned subsidiary of Software AG USA, Inc.

SLF4J API

1.7.5

org.slf4j

MIT

Copyright (c) 2004-2013 QOS.ch

Bliki

3.0.6

com.technia.tvc.bliki

EPL 1.0 / LGPL 2.1

N/A

Java-Html-Sanitizer

20160203.1

org.owasp.html

ASL 2.0

Copyright (c) 2015, Mike Samuel

7.2. Frontend

Module License Copyright

Atmosphere

ASL 2.0

Copyright 2015 Async-IO.org

jQuery

MIT

Copyright 2011, John Resig

markItUp!

MIT

Copyright © 2008 Jay Salvat

jQuery Breadcrumb

MIT

Copyright (c) 2009 CompareNetworks Inc.

jQuery Easing

BSD

Copyright © 2008 George McGinley Smith

TimyMCE

LPGL

Copyright 2009, Moxiecode Systems AB

Sizzle

MIT/BSD

Copyright 2011, The Dojo Foundation

Debouncedresize

MIT

Copyright 2012 @louis_remi Licensed under the MIT license.

wz_tooltip

LGPL

Copyright (c) 2002-2008 Walter Zorn. All rights reserved.

jQuery Mobile

MIT

Copyright (c) JTSage

Handlebars

Copyright © 2011 by Yehuda Katz

Async

MIT

Copyright 2010-2014 Caolan McMahon

SVGCheck

Copyright 2000 Adobe Systems Incorporated

sprintf

BSD

Copyright (c) 2007-2013 Alexandru Marasteanu

jQuery UI

MIT

Copyright 2014 jQuery Foundation and other contributors

jQuery UI Widget

MIT

Copyright 2014 jQuery Foundation and other contributors

jQuery Iframe Transport

MIT

Copyright 2011, Sebastian Tschan

jQuery File Upload Video Preview Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload Validation Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload User Interface Plugin

MIT

Copyright 2010, Sebastian Tschan

jQuery File Upload Processing Plugin

MIT

Copyright 2012, Sebastian Tschan

jQuery File Upload jQuery UI Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload Image Preview & Resize Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload Audio Preview Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload AngularJS Plugin

MIT

Copyright 2013, Sebastian Tschan

jQuery File Upload Plugin

MIT

Copyright 2010, Sebastian Tschan

jQuery XDomainRequest Transport Plugin

MIT

Copyright 2011, Sebastian Tschan

jQuery postMessage Transport Plugin 1.1.1

MIT

Copyright 2011, Sebastian Tschan

jquery.dynatree

MIT

Copyright (c) 2008-10 Martin Wendt

Cookie plugin

MIT

Copyright (c) 2006 Klaus Hartl

jQuery Context Menu Plugin

MIT

Copyright A Beautiful Site, LLC.

jQuery blockUI plugin

MIT

Copyright (c) 2007-2010 M. Alsup

TableDnD plug-in for JQuery

MIT

Copyright (c) Denis Howlett

jqGrid

MIT

Copyright (c) 2008, Tony Tomov

Bootstrap

ASL 2.0

Copyright 2012 Twitter, Inc.

Selectize

ASL 2.0

Copyright (c) 2013 Brian Reavis & contributors

jQuery throttle / debounce

MIT

Copyright (c) 2010 "Cowboy" Ben Alman

jQuery Mousewheel

MIT

Copyright (c) 2013 Brandon Aaron

es5-shim

es5-shim

Copyright 2009-2014 by contributors, MIT License

jQuery miniColors

MIT

Copyright 2012 Cory LaViska for A Beautiful Site, LLC.

jQuery UI Widget

MIT

Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)

jQuery File Upload User Interface Plugin

MIT

Copyright 2010, Sebastian Tschan

Fabric

Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak)

Sylvester

Copyright (c) 2007 James Coglan

jQuery UI CoverFlow

Copyright Addy Osmani 2011

RequireJS

MIT

Copyright (c) 2010-2012, The Dojo Foundation

q

MIT

Copyright 2009-2012 Kris Kowal

Magnific Popup

MIT

Copyright (c) 2013 Dmitry Semenov

JSON

MIT

Copyright 2012-2014, Kit Cambridge

textentered

MIT

Copyright 2011 by Chris Berry, Object Partners

jQuery Growl

MIT

Copyright (c) 2010 - 2013 Kevin Sylvestre

Pikday

BSD/MIT

Copyright (c) 2014 David Bushell

Tether

MIT

Copyright (c) 2014-2016 HubSpot

Drop

MIT

Copyright (c) 2015 HubSpot

Tooltip

MIT

Copyright (c) 2015 HubSpot

Split.js

Note 1

Copyright (c) 2016 Nathan Cahill

Pure

BSD

Copyright 2013 Yahoo! Inc.

Lodash

MIT

Copyright JS Foundation and other contributors

Moment

MIT

Copyright (c) JS Foundation and other contributors

Note 1: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

7.3. Licenses

The licenses mentioned in the tables in the previous chapters are abbreviated. The abbreviations are:

  • ASL – Apache Software License

  • MPL – Mozille Public License

  • LGPL – GNU Lesser General Public License

  • BSD – Berkeley Software Distribution License

  • EPL – Eclipse Public License