As a developer, your role to support migration is to ensure that any custom code used in your EBX® implementation compiles against the new EBX® binaries and is capable of successful deployment. This task requires that you understand the differences in the new EBX® 6 architecture and how it impacts performance of existing custom Java code. You should also familiarize yourself with the information regarding backwards compatibility contained in the TIBCO EBX® Release Notes.
Begin the process of updating your custom code by reviewing the new architecture's impact on custom code. Then follow the steps in Adapt code and test migration. After successful completion of the test phase, you will have:
Adjusted and tested your code.
Made changes in your data models and projects required to successfully test migration in your local environment.
Generated new binaries capable of deployment and testing in the pre-production environment.
The new scalable architecture can impact the performance of custom Java code. Some scenarios that worked well before might require adjustments. In particular, focus on replacing or optimizing the following:
Repeated lookup by primary key | Previously, when the cache in our custom EBX® in-memory indexes could contain an entire table's data, it was cheap to access records using random table lookups. This type of access must now be rewritten to take advantage of the new SQL features. Take for example Java code that performed a nested loop join where a |
Repeatedly creating similar requests | EBX® now embeds the Apache Calcite framework to optimize the submitted instances of |
Programmatic access rules | Programmatic access rules implement the Java interface |
Programmatic labels | Programmatic labels implement the Java interfaces |
Programmatic filters | Programmatic filters implement the Java interface |
Constraints with unknown dependencies | Avoid constraints with unknown dependencies on large datasets, as they are checked on each validation request. See Data validation for more information. |
Unnecessary index refresh | To improve transaction performance (Java implementations of |
Inherited fields | As explained in the Search limitations, inherited fields cannot benefit from the new index optimizations. As a consequence all operations (querying, validation, data comparison, etc.) that will be performed on inherited fields will be slower compared to versions prior to EBX® 6. It is strongly advised to not use inherited fields to avoid performance issues. Wherever possible, depending of the use case, it is recommendable to convert these fields into linked fields or to substitute the behavior of inherited fields by simulating inheritance using triggers for instance. |
It is important that prior to testing migration, you remove all JAR and WAR files related to EBX® 5 from your environment.
Repository preparation:
The following lists high-level tasks for preparing your local repository for your development environment. When preparing a pre-production or production repository for migration, or for more details on repository cleanup tasks mentioned in the following steps, see Step 2: Preparing the repository.
Backup your existing repository.
Start EBX® and ensure all data models compile without errors.
Ensure that no data model dependencies on discontinued add-ons exist. See Changes to supported add-ons for more information.
Clean dataspaces and workflows. This step is optional. However, note that any closed dataspaces are deleted during migration. Re-open any dataspace you want to keep. This step is more beneficial for larger repositories where large numbers of dataspaces could lead to longer migration times.
Ensure the URL policy conforms to 6.x requirements. Navigate to Administration > User interface > User interface configuration > Advanced perspective > Interface configuration > URL Policy and revert any existing settings. To update the URL computing configuration, you can edit the ebx.properties
file. See URLs computing for more information.
Shutdown and then backup your clean repository.
Code preparation:
Download EBX® 6 binaries from TIBCO eDelivery and deploy the following JARs in your local environment (located in <your download directory>/ebx.software/lib
):
When migrating to EBX® 6.0.x:
For EBX® APIs: ebx.jar
To support the new compression algorithm: ebx-lz4.jar
When migrating to EBX® 6.x:
To support the new compression algorithm: ebx-lz4.jar
For EBX® Java APIs: ebx-api.jar
For third-party Java APIs: ebx-resources-api.jar
Review the following to ensure any custom code complies with new recommendations and requirements:
Release Notes > Backward compatibility sections.
Recompile any custom libraries or webapps.
Initiate auto migration by starting your local server. The process should terminate successfully. Look for the following log entry in the kernel.log
file: EBX® Started and Initialized
.
The following are common issues that can problems:
Libraries not compiled using EBX® 6. If this is the case, EBX® throws the following exception: java.lang.IncompatibleClassChangeError
.
Data model errors. If any errors were left unresolved, the migration process is automatically terminated.
Compile error in the project if the project isn't built correctly.
Once migration completes successfully in your local environment, you can deploy and test in a pre-production environment with a larger repository. However, when testing in a pre-production environment, it is imperative to follow the process outlined in Step 2: Preparing the repository to prepare the repository prior to starting the application server.