Troubleshooting

This page identifies issues you may encounter and how to resolve them.

Discover Issues

When Live API Creator is not working properly, you can:
  • View the logs.
For more information about viewing logs, see View Logging Information.
  • View the container's logs, such as Apache Tomcat or Jetty.
  • (If the problem is client-only) View the browser's debug page.

Resolve Errors

For more information about resolving errors, see Errors and Error Handling.

Database Connections

General Connection Issues

To assist the Live API Creator team in supporting your connection issues, identify:
  • The main container log (catalina.out for Tomcat, console output for Jetty).
  • The exact scenario (explain the exact steps used to connect to the DB).
  • An export of the database, whenever possible, so that the team can identify issues.

Verify Connectivity

Verify that you can connect to the database from the machine hosting Live API Creator using SQL Tools (for example Toad, DBVisulaizer, Razor, MySqlWorkbench, and SQL/Server Enterprise Manager). It is common to encounter firewalls issues, particularly in large organizations.

Database Connects but no tables - Ensure Active

Ensure your data source is marked Active. Live API Creator retrieves schema information only for active data sources. Each database may have a catalog/database or schema that is used to read the metadata. If these values are incorrect, the connection may succeed but the tables will be empty.

For more information about how to mark a data source as active, see Data Sources.

External RESTFull Calls

If you are having issues invoking APIs from other servers, verify your URL and headers using Rest tools such as Postman.

For more information about how to debug using the rest<verb>, see The SysUtility Object.

Large Schemas

Schemas are cached in the Admin database, so a full load is only required initially, or when you refresh the schema. For very large schemas, the initial load time may exceed the browser time-out time. In this case, you will see an error, but the API Server continues the load process.

Reload API Creator in your browser. The schema is loaded.

Otherwise, contact CA Support.

SQL Server

For more information about connecting to Microsoft SQL Server, see Microsoft SQL Server.

Reset the Database Password After API Project Import

API Creator does not store passwords in the .json file on export. You must set your database passwords after you import your API.

For more information, a
bout how to set your database password, see Database Connectivity.

Authentication Provider not set after Project Import

API Creator does not store the authentication provider in the .json file on export. You must specify if after you import your API.

For more information:

Named Filters gives SQL Error

The use of named filters allows creation of named parameter values to be used in place of column attributes. However, each database has its own rules on how to handle mixed case and quotes. Make sure the column attribute names are in single quotes ('name'), double quotes ("name"), or back-ticks (`name`) depending on Derby, MySQL, Oracle requirements.

Connect to Large Schemas

For schemas in excess of several hundred tables, you may run into browser time-outs and heap errors. Browser timeouts reflect that the time to load the schema exceeded the browser timeout. To correct this issue, log in to API Creator again.

For heap errors, increase the heap size provided to the API Server. For example, in the Jetty version, the Start command file (.sh or .bat) has the following:

java -DSTOP.PORT=8123 -DSTOP.KEY=stop_caliveapicreator -jar ../start.jar $1 $2 $3 $4 $5 $6 $7 $8 $9

Change it as follows:

java -Xmx1024m -DSTOP.PORT=8123 <<< etc >>>

Data Explorer does not Show Tables

Make sure the user logon has at least one role assigned and the role has at least one table with read access. If you have changed your URL fragment and/or your project name, clear the internal API cache by switching API.
  1. Go to the Home page and select a different API.
  2. Repeat the process selecting your original API.

Live API Creator rebuilds the new URL endpoints.

For more information:

  • About assigning roles and access, see Security.
  • About defining roles and table access, see Security

API Docs - Swagger not Showing after Import

With the introduction of Swagger 2.0, API Creator includes the API Documentation role. You must be assigned this role, with access to read, insert, update, and delete. You can also allow the discovery of the API Swagger doc without authentication.

For more information about how to allow the discovery of the API Swagger doc without authentication, see API Properties.

Authentication Provider - Cannot Find Custom JS Library for Create Function

The first time you access a JavaScript library for an authentication provider and you get an error message, open any API and set the custom authentication JavaScript library as used (loads into memory). When you return to the Authentication Providers page, your additional create properties are available.

For more information about creating custom authentication providers using JavaScript, including the create properties, see Create Custom Authentication Providers using JavaScript.

Tomcat Needs to Allow Slash in Primary Key

Tomcat may need a system parameter change to allow support for a slash in the primary key. For example your key may be "P5/P5A" and the href URL will look like this (encoded) /P5%2FP5A. However, Live API Creator returns an error saying it cannot find the row. This is caused by the Tomcat server trying to decode the "/" before sending on to Live API Creator.

You can find the fix by adding this to the JVM args of the system (setenv):

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

Update Amazon EBS - Apache proxy server in the beanstalk instance.

  • SSH into the machine
  • cd /etc/httpd/conf.d
  • Edit the file elasticbeanstalk.conf to have the data below ( overwrite the file )

<VirtualHost *:80>
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  AllowEncodedSlashes On
  ProxyPass / http://localhost:8080/ retry=0 nocanon
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on
  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>

Make changes to the tomcat config to allowed encoded slashes. ( /usr/share/tomcat8/conf/tomcat8.conf)

export CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

Restart both tomcat and httpd service’s ( sudo service <servicename> restart )
Apache service take a minute or two to be up.

Project Import with null password can cause Database Issues

The migration of an API from one version to another can cause issue with some databases that attempt to connect and fail then lock the connection out. To solve this, export your API Project and set your datasource to inactive. Since the password is not exported, when you import the API JSON file, you can then enter the password, test connection, and then mark the datasource as active.

Resource Properties not Visible

This occurs because the browser is attempting to auto-fill values. API Creator disables this functionality, though certain browsers ignore the disabling. Correct the browser from ignoring the disabling. The following image shows the Resource type and Resource name fields on the Create, Resources, Resource tab:

Google Chrome

Customize Google Chrome. Click the Chrome burger, Settings.

For more information, see Google Chrome help.

Safari

Go to Safari, Preferences, AutoFill. Clear the User names and passwords checkbox. The following image shows this field on the AutoFill window in Safari:

Extensibility Issues

The following issues relate to invoking Java/JavaScript from your logic.

Class Cast invoking JavaScript - ScriptObjectMirror

The following issue is caused by passing a string instead of an object (or vice versa):

caused by: java.lang.ClassCastException: Cannot cast java.lang.String to jdk.nashorn.api.scripting.ScriptObjectMirror

To solve this, you can do one of the following:

  • Convert a string to an object using JSON.parse(aString).
  • Convert an object to a string using JSON.stringify(anObject).